(A screenshot of an old version of Firefox showing Big5, GB 2312, GBK, GB 18030, HZ, ISO-2022-CN, Big5-HKSCS, EUC-TW, EUC-JP, ISO-2022-JP, Shift_JIS, EUC-KR, UHC, Johab and ISO-2022-KR as available encodings under the CJK sub-menu.)
← ホームへ戻る

ISO/IEC 2022 文字エンコーディングの仕組みと規格体系

🗓 2026年8月13日

デジタルデータのやり取りにおいて、異なる言語や文字セットを正しく表示させるための基盤となるのが文字エンコーディング規格です。中でもISO/IEC 2022は、複数の文字セットを動的に切り替えて利用することを可能にする高度なフレームワークを提供しています。本記事では、この規格の構造から、日本で広く利用されたISO-2022-JPなどの具体例までを詳しく解説します。

Key Facts

  • 動的な切り替え: エスケープシーケンスを用いて、一つのデータストリーム内で異なる文字セットを切り替えることができる。
  • マルチバイト対応: 1バイトで表現できないCJK(中国語・日本語・韓国語)などの文字を効率的に扱う仕組みを持つ。
  • 広範な互換性: ASCIIからUnicode、さらには各国固有の規格(JIS, GB, KSなど)までを包括的に定義している。
  • 制御機能: シフト関数(Locking Shift / Single Shift)により、文字セットの適用範囲を厳密に制御する。

ISO/IEC 2022の基本構造と動作原理

ISO/IEC 2022は、単一の文字コードではなく、文字セットを管理するための「フォーマット」を規定した規格です。最大の特徴は、エスケープシーケンス(特定の制御コードから始まる文字列)を使用して、現在どの文字セット(G0〜G3)を使用しているかを宣言し、切り替える点にあります。

例えば、英数字のみのASCIIセットから、日本語の漢字セットへ移行する場合、特定のコードを挿入することで、それ以降のバイト列の解釈方法をシステムに変更させます。これにより、7ビット環境などの制限がある中でも、多言語の混在が可能となりました。

(A screenshot of an old version of Firefox showing Big5, GB 2312, GBK, GB 18030, HZ, ISO-2022-CN, Big5-HKSCS, EUC-TW, EUC-JP, ISO-2022-JP, Shift_JIS, EUC-KR, UHC, Johab and ISO-2022-KR as available encodings under the CJK sub-menu.)

文字セットの指定と切り替えメカニズム

この規格では、文字セットをG0からG3までの4つの領域に割り当てます。切り替えには以下の手法が用いられます。

  • ロッキングシフト (Locking Shift): 一度指定すると、別の切り替えコードが現れるまでその文字セットが維持されます(例:LS1, LS2など)。
  • シングルシフト (Single Shift): 直後の1文字だけを特定の文字セットで解釈させ、その後は元の状態に戻ります(例:SS2, SS3)。

主要な実装例と地域規格

ISO/IEC 2022のフレームワークに基づき、世界各地で具体的な文字エンコーディングが策定されました。特に東アジア圏では、複雑な文字数を扱うためにこの仕組みが不可欠でした。

日本における展開(ISO-2022-JPなど)

日本で最も普及したISO-2022-JPでは、ASCIIとJIS X 0208(漢字)を切り替えて使用します。また、後継のISO-2022-JP-2では、JIS X 0212の追加や、ISO 8859-1(ラテン文字)などの他言語セットへの対応が拡張されました。

その他のCJK規格

中国のGB 2312や韓国のKS X 1001なども、ISO/IEC 2022の仕組みを利用してマルチバイト文字として定義されています。これにより、異なる言語圏の文書を一つの規格体系の中で共存させることが可能になりました。

Relationship between ECMA-43 (ISO/IEC 4873) editions and levels, and EUC.

技術仕様のまとめ

以下に、ISO/IEC 2022に関連する主要な規格と、その役割をまとめます。

ISO/IEC 2022 関連規格サマリー
規格名 主な役割・特徴 代表的な文字セット
ISO/IEC 2022 文字セット切り替えの基本フォーマット規定 共通エスケープシーケンス
ISO-2022-JP 日本語インターネットメール等の標準 ASCII, JIS X 0208
ISO/IEC 10646 ユニバーサル文字セット(Unicode UTF-8, UTF-16, UTF-32
ECMA-35 / 43 文字コードの構造およびレベル定義 ISO 4873 レベル1〜3
EUC (Extended Unix Code) Unix系OSで利用される拡張コード CJK各言語セット

Frequently Asked Questions

ISO/IEC 2022とUnicode(UTF-8など)の違いは何ですか?

ISO/IEC 2022は「文字セットを切り替えるための仕組み」を提供する規格であり、一つのストリーム内で複数のコード表を使い分けます。対してUnicodeは、世界中のほぼ全ての文字に固有の番号を割り当てる「単一の巨大な文字セット」であり、切り替えなしに多言語を表現します。

エスケープシーケンスとは具体的にどのようなものですか?

ESC(1B)という制御文字から始まる特殊なバイト列のことです。例えば、ISO-2022-JPで漢字モードに切り替える際は「ESC $ B」のようなシーケンスが使用され、受信側に「ここから先はJIS X 0208として処理せよ」と指示を出します。

なぜ現在ではISO-2022-JPよりもUTF-8が主流なのですか?

ISO-2022-JPのような切り替え方式は、データの途中で切り替えコードが欠落すると、それ以降の文字がすべて文字化けするという脆弱性があります。また、実装が複雑であるため、シンプルに全ての文字を統一的に扱えるUTF-8に移行しました。

JIS X 0208やJIS X 0213とはどのような関係にありますか?

JIS X 0208や0213は「文字の割り当て表(文字セット)」そのものです。ISO/IEC 2022は、これらの文字セットをどのようにデータとして流し、切り替えるかという「伝送形式」を定義しているため、両者は組み合わせて利用されます。

References

  1. : 区点, kuten; : 区位; : 區位; : qūwèi; : 행렬; : 行列; : haeng-nyeol
  2. : 區; : 区; : ; : ku; 'zone'; : 행; : 行; : haeng
  3. : 点, ten, 'point'; : 位; : wèi; lit. 'position'; : 열; : 列; : yeol
  4. : 面, men, 'face'
  5. Specified for F bytes 0x40 (@), 0x41 (A) and 0x42 (B) only, for historical reasons. Some implementations, such as the 2G encoding, use additional escapes of this form for non-ISO-2022-compliant purposes.
  6. Listed by . See footnote for ESC , F below for background.
  7. F, adjusted to the range 1-63, indicates which (upwardly compatible) revision of the immediately-following registration is needed, so that old systems know that they are old.
  8. In earlier editions, 96-character sets did not exist, and the escape codes now used for 96-character sets were reserved as space for additional 94-character sets. Accordingly, the ESC 0x1B 0x2C sequence was defined in early editions of the standard as designating further 94-character sets to G0. Since 96-character sets cannot be designated to G0, this first I byte is not used by the current edition of the standard. However, it is still listed by .
  9. See also, for instance, Printronix (2012), OKI® Programmer's Reference Manual (PDF), p. 26, archived from the original (PDF) on 2019-09-25, retrieved 2019-09-25 for a more recent system which uses ESC ( H to switch to ASCII from a DBCS.

📸 フォトギャラリー

(A screenshot of an old version of Firefox showing Big5, GB 2312, GBK, GB 18030, HZ, ISO-2022-CN, Big5-HKSCS, EUC-TW, EUC-JP, ISO-2022-JP, Shift_JIS, EUC-KR, UHC, Johab and ISO-2022-KR as available encodings under the CJK sub-menu.)
Relationship between ECMA-43 (ISO/IEC 4873) editions and levels, and EUC.