ISO_2022とは - わかりやすく解説 Weblio辞書 (original) (raw)

ISO/IEC 2022(旧称 ISO 2022)は、

を規定するISO規格である。JISの対応規格はJIS X 0202 「情報技術-文字符号の構造及び拡張法」[1]Ecma Internationalの対応規格はECMA-35

ISO/IEC 2022 の符号化方式は、一般に、1文字に1バイトか2バイト以上を使う可変長の文字符号化方式である。いくつかの符号化表現がISO/IEC 2022の機構を使っている。たとえば、ISO-2022-JPは日本語で広く使われている符号化表現であり、いわゆる「JISコード」というのもこれを指すことが一般的である。

歴史

コンピュータによる文字情報処理が可能になって以来、さまざまな言語のために、コンピュータ上で文字データを表現したいという要求を満たすため、多くの符号化文字集合が作られてきた。複数の文字集合の存在は、文字集合があらかじめ当事者間で合意されていなければ情報交換に支障をきたす。また、情報交換中に複数の文字集合を利用することも困難である。ISO/IEC 2022は、複数の文字集合を単一の文字符号化方式の下で利用できるようにするための技術として開発された。

ASCIIは7ビットのラテンアルファベット文字集合であり、最大94文字の図形文字 (空白文字を除く) しか収容できない。ISO/IEC 646 (1967年初版)[2]では、図形文字の収容領域を ASCII に倣いつつ、12個の符号位置を各国の国内使用目的のために置き換えてよいこととし、さらにレパートリとして国別の文字集合を定義するという方法をとった。

ISO/IEC 2022 (1973年初版)[3] は、ISO/IEC 646 に準拠した複数の符号表を切り替えて多言語の処理を実現することを目的に制定された。しかし、ISO/IEC 646 の方式では、ラテンアルファベットの範囲に限ってさえも、多数のダイアクリティカルマーク付き文字や、言語ごとに必要とされる記号類などを十分に収容することができなかった。このため、ISO/IEC 646 と互換性を保ちつつ8ビット符号 を採用した ISO/IEC 4873 (1979年初版)[4] が制定された。特にヨーロッパでは1980年代に入って多言語のテキストデータを共通の仕様の下に処理できるようにしたいという要求が高まっており[5]、1987年からは ISO/IEC 4873 に対応した ISO/IEC 8859シリーズが制定されはじめた。ISO/IEC 8859シリーズでは、新たに96文字の図形文字を収容可能にし、さらにレパートリとして言語別の文字集合を定義するという方法をとった。

また、ギリシア語ロシア語アラビア語、もしくはヘブライ語のような、ラテンアルファベットに基づかない多くの言語の文字も、歴史的に ISO/IEC 4873 に準拠した俗に言う「拡張ASCII」を用いてコンピュータ上で表現されてきたものが多い (一部は後に ISO/IEC 8859 シリーズにも規定されたほか、多くの国・地域の符号化文字集合の規格が ISO/IEC 4873 に準拠している)。さらに、東アジア言語、とくに中国語日本語、および韓国語の表記は、8ビットの1バイトで表現可能な範囲をはるかに超えた数の文字を使い、言語別の2バイト文字集合によって初めてコンピュータ上で表現された。ISO/IEC 2022 は、これら複数の文字集合を単一の符号化方式の下に扱うことを可能にしている。

ISO/IEC 2022に基づく符号化表現は現在も広く使われている。たとえば日本語電子メール用のISO-2022-JPや、UNIX環境で使われるEUC-JP、中国のGB 2312ことEUC-CN、韓国のEUC-KRなどがそうである。ISO/IEC 8859シリーズもISO/IEC 2022の構造にしたがっている。一方で、この規格に則らない符号化方式、たとえばShift_JISや台湾のBig5などもまた広く使われている。

第2次規格以降の主な改正点

第2次規格以降の主な改正点には次のようなものがある。なお、用語については当項目でこの後解説する。

第2次規格

第3次規格

第4次規格

<#表1>に、各版ごとの規格番号、制定日などを示す。

表1 ISO/IEC 2022 の各版ごとの規格番号・制定日等

ISO規格番号 ISO制定・改正日 JIS番号 JIS制定・改正日
第1次規格 ISO 2022:1973 1973年5月制定 JIS C 6228:1975 1975年3月1日制定
第2次規格 ISO 2022:1982 1982年12月改正 JIS C 6228:1984 1984年11月1日改正
第3次規格 ISO 2022:1986 1986年5月改正 JIS X 0202:1991 1991年1月1日改正
第4次規格 ISO/IEC 2022:1994 1994年12月改正 JIS X 0202:1998 1998年1月20日改正

※ 1987年3月1日部門X(情報処理)の新設に伴いJIS X 0202:1984 と改称された。

詳細

符号表の構造

ISO/IEC 2022は当初ISO/IEC 646に基づいた7ビット符号であったので、多くのISO/IEC 646の特性を持ち合わせている。7ビット符号では、各バイトの最上位桁ビットは使われない。これにより、7ビットの伝送路を通してISO/IEC 2022を伝送することは(ISO/IEC 646と同様)容易である。8ビット符号では、最上位桁ビットを GL領域とGR領域 (後述) の区別に用いるが、文字集合中の文字を区別するのには用いない。この特性はEUC符号化の基本原理にも利用されている。

ISO/IEC 2022の符号表は、表示や印字される文字 (図形文字) の領域と、制御機能に使う文字 (制御文字) の領域に分けられている。7ビット符号は、32個の制御文字基本集合の領域 (C0) と、94個または96個の図形文字集合の領域 (GL領域) を持つ。8ビット符号は、これに加えて32個の制御文字補助集合の領域 (C1) と、94個または96個の図形文字集合の領域 (GR領域) を持つ。**<#図1>**に、7ビットと8ビットの符号表の構造を示す。符号表上の文字の位置は、表の_行_および_列_で表す。たとえばASCIIの「Z」という文字は行列で 05/10 にあたり、符号のバイトの値としては16進数で 5A (10進数で 90) となる。

複数バイトの文字集合では、複数のバイトで1文字を符号化する。たとえば94n文字集合では、2バイトを使って8836個(94×94)までの文字を表現できる。そして、3バイトを使って830584個(94×94×94)までの文字を表現できる。2バイト文字集合では、各文字の符号位置は_区点_ (3バイト文字集合の場合は_面区点_) で(面および)区および区内の位置を指定する。つまり、94×94文字集合の場合、区および点のそれぞれが 1 から 94 の範囲をとるので、それぞれを1バイトずつGL領域の 02/01 から 07/14 (GR領域ならば 10/01 から 15/14) に対応させて2バイトとする。たとえば、JIS X 0208 の「字」は 27区90点 (27-90) なので、GL領域では 03/11 07/10、GR領域では 11/11 15/10 と表現される。

図1 ISO/IEC 2022の符号表の構造

(a) 7ビット符号 行\列 00 01 02 03 04 05 06 07 08 09 00 [b] 01 02 03 04 05 06 07 C0 GL C1[d] 08 09 10 11 [a] 12 13 14 15 [c] (b) 8ビット符号 行\列 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 00 [b] [e] 01 02 03 04 05 06 07 C0 GL C1 GR 08 09 10 11 [a] 12 13 14 15 [c] [e]
JIS X 0202:1998 を元に作成。 符号表上の文字の位置を行と列で示す。たとえば 01/11 (ESCAPE) は16進数値では 1B にあたる。 a 常に ESCAPE 制御文字。 b GL領域に94文字集合が呼び出されているときは SPACE (空白文字) となる。 c GL領域に94文字集合が呼び出されているときは DELETE 制御文字となる。 d 7ビット符号では、C1制御文字は実際には使用しない。代替のエスケープシーケンスで表す。 e GR領域に94文字集合が呼び出されているときは、この2つの行列は使用しない。

制御機能

表2 ISO/IEC 2022 の制御機能 (抜粋) 制御文字またはエスケープシーケンス 説明 略号 指示 01/11 02/01 I Ft C0への制御機能集合の指示 (呼び出しを含む) CZD 01/11 02/02 I Ft C1への制御機能集合の指示 (呼び出しを含む) C1D 01/11 02/08 I Ft G0への94文字集合の指示 GZD4 01/11 02/09 I Ft G1への94文字集合の指示 G1D4 01/11 02/10 I Ft G2への94文字集合の指示 G2D4 01/11 02/11 I Ft G3への94文字集合の指示 G3D4 01/11 02/13 I Ft G1への96文字集合の指示 G1D6 01/11 02/14 I Ft G2への96文字集合の指示 G2D6 01/11 02/15 I Ft G3への96文字集合の指示 G3D6 01/11 02/04 02/08 Ft[a] G0への94n文字集合の指示 GZDM4 01/11 02/04 02/09 Ft G1への94n文字集合の指示 G1DM4 01/11 02/04 02/10 Ft G2への94n文字集合の指示 G2DM4 01/11 02/04 02/11 Ft G3への94n文字集合の指示 G3DM4 01/11 02/04 02/13 Ft G1への96n文字集合の指示 G1DM6 01/11 02/04 02/14 Ft G2への96n文字集合の指示 G2DM6 01/11 02/04 02/15 Ft G3への96n文字集合の指示 G3DM6 01/11 02/05 I Ft 他の符号化システムの指示 DOCS 01/11 02/06 F[b] 文字集合の改訂番号の識別 IRR 呼び出し (シフト) 00/15 GL領域へのG0の呼び出し[c] SI 00/15 GL領域へのG0の呼び出し[d] LS0 00/14 GL領域へのG1の呼び出し[c] SO 00/14 GL領域へのG1の呼び出し[d] LS1 01/11 06/14 GL領域へのG2の呼び出し LS2 01/11 06/15 GL領域へのG3の呼び出し LS3 01/11 07/14 GR領域へのG1の呼び出し[d] LS1R 01/11 07/13 GR領域へのG2の呼び出し[d] LS2R 01/11 07/12 GR領域へのG3の呼び出し[d] LS3R 01/11 04/14または08/14 GL領域またはGR領域へのG2の1文字限りの呼び出し[e] (シングルシフト) SS2 01/11 04/15または08/15 GL領域またはGR領域へのG3の1文字限りの呼び出し[e] (シングルシフト) SS3 アナウンス 01/11 02/00 F[f] アナウンス機能 ACS
JIS X 0202:1998 および JIS X 0211-1994 を元に作成。 符号表上の文字の位置を行と列で示す。たとえば 01/11 (ESCAPE) は16進数値では 1B にあたる。また、Ft または I Ft は、ISOの文字集合国際登録簿への登録によって割り当てられたエスケープシーケンスの終端バイト (および第2中間バイト) を表す。 a ただし、_Ft_バイト が 04/00、04/01、04/02 の場合は 02/08 を省略する。これは具体的には、JISC C 6226-1978 (JIS X 0208 の第一次規格)、GB 2312-80、JIS C 6226-1983 (同第二次規格) の文字集合を指示する場合である。 b _F_バイトで、直後の指示機能で指示される文字集合の改訂番号を識別する。 c 7ビット符号でのみ用いる。 d 8ビット符号でのみ用いる。 e 7ビット符号ではエスケープシーケンスを使う。8ビット符号ではC1制御文字を使うこともできる。 f _F_バイトによって、利用する機能を指定する。

複数の文字集合を表現するために、ISO/IEC 2022の文字符号化方式は、符号の性質や扱う文字集合を指定するための制御機能を含んでいる。制御機能の表現には、7ビット符号ではC0制御文字のほか、ESCAPE制御文字(01/11。十六進数の1B、十進数の27)で始まる2バイトないし4バイトからなるエスケープシーケンスを用いる[6]。8ビット符号ではさらに、C1 制御文字も用いる。この文字符号化方式では、データの正しい解釈が最後に出現した制御機能に依存するため、データを先頭から順番に処理する必要がある。**<#表2>**に、ISO/IEC 2022 の制御機能の一部を示す。

文字集合の選択

ある文字集合を符号表上で使うには、一般に指示 (英: designate) と呼び出し (英: invoke) という2段階の手続きを必要とする。

ISO/IEC 2022 は、符号表上の4つの領域C0、GL、C1、GRとは別に、仮想的なバッファをもっている。G0、G1、G2、G3という4つのバッファがある。

まず、指示のエスケープシーケンスによって、使おうとしている文字集合を、4つのバッファのいずれかに対応付ける。

指示のエスケープシーケンスは、どの文字集合を使おうとしているか宣言するのみならず、これらの文字集合の特性をも知らせる。扱おうとしている文字集合が94文字、96文字、8836(94×94)文字、830584(94×94×94)文字、もしくは他のサイズのいずれであるかを伝える。指示していない文字集合を使うことはできない。また、5つ以上の文字集合を一度に指示しておくこともできない。

つぎに、呼び出し (シフト) の制御機能によって、G0、G1、G2、G3のいずれかを、符号表上のGL領域かGR領域に対応付ける。指示した文字集合を呼び出ししてはじめて、その文字集合を符号として使うことができるようになる。7ビット符号では2つ以上、8ビット符号では3つ以上のバッファを一度に呼び出しておくことはできない。

呼び出しには、ロッキングシフトシングルシフトがある。ロッキングシフトでは、いったん呼び出しされたものは、別の呼び出しがあるまで使いつづけることができる[7]。シングルシフトでは、呼び出しされたものは直後の1文字 (シングルバイトの文字集合であれば1バイト、マルチバイトの文字集合であればそれぞれのバイト数分) だけ使え、そのあとは呼び出し前の状態に戻る[8]

実際には、文脈や規約が特定の文字集合を使うよう指定していれば、符号化の仕様を指定する制御機能 (アナウンス機能) や初期の文字集合を指示する制御機能は省略することができる。ISO-2022-CNを定義しているRFC 1922を例に取ると、呼び出しにSIとSOの制御文字を使用するが、この仕様を宣言するアナウンス機能のエスケープシーケンスを省略している。また、初期状態ではG0にUS-ASCII、G1にGB2312-80を指示し、G0をGL領域に呼び出しているが、指示のエスケープシーケンスも省略している。

ISO国際登録簿

ISO/IEC 2022は具体的な符号化文字集合とは切り離して規定されているため、実際にこの規格を適用するにあたってはエスケープシーケンスの終端文字と符号化文字集合などとの具体的な対応関係を定める必要があり、そのために符号化文字集合のISO国際登録簿が存在する。これはエスケープシーケンスの終端文字についてそれぞれどの文字がどの符号化文字集合などに対応しているのかを定めたものである。符号化文字集合のISO国際登録簿と登録方法はISO/IEC 2375 Data Processing - Procedure for Registration of Escape Sequences (情報技術-エスケープシーケンス及び符号化文字集合の登録手順) に規定されている。

ISO国際登録簿への登録申請を行うことが出来るのは次の者に限定される。

登録の手続きと国際登録簿の維持管理は登録事務局(Registration Authority)がおこなうことになっている。2024年に登録手続きが廃止されるまで[9]、その事務局は日本の情報処理学会情報規格調査会 (IPSJ/ITSCJ) が引き受けていた(符号化文字集合の国際登録簿)。ITSCJ以前はECMA(欧州計算機製造業者協会、現Ecma International)が登録事務局を引き受けていた[10]

終端文字は登録順に16進数の「4/0」から順に割り振っていくことになっている。終端文字の割り振りは区分ごとに行われることになっている。(そのため同じ終端文字でも、どの区分の終端文字であるのかによって指し示す符号系は異なり、そのエスケープシーケンスがどの区分の符号系を指し示すのかは中間文字が何であるのかによって識別できる。)

登録数の最も多い94文字集合については、当初の規格で用意されていた利用可能な終端文字を使い切ってしまったため、第三次規格において94文字集合を指し示す新たな中間文字を設けてより多くの94文字集合が登録出来るように規定が改正された。

なお、一つの規格で定められた符号系であっても、文字の追加変更を含む改正が行われたときには異なる符号系として扱われることになっており、そのために改めて登録が行われ、新たな登録番号と終端符号が付与されることになる。例えばJIS X 0208は1978年版、1983年版、1990年版のそれぞれが、JIS X 02132000年版と2004年版がそれぞれ異なる符号系として登録されている。

応用例

7ビット符号によるマルチバイト用のキャラクタセット

ISO/IEC 2022の機構を使う7ビット符号のキャラクタセットには以下のものが含まれる。次のような特徴を持つ。

  1. アナウンス機能のエスケープシーケンスは省略する。
  2. 7ビット符号なので、GR領域は使わず、C1制御文字はエスケープシーケンスで表す。
  3. 最初は、G0にASCIIを指示し、G0をGL領域に呼び出した状態で始まる (このための制御機能は省略する)。つまり、最初はUS-ASCIIで始まる。
  4. 行の終わりではASCIIに戻さなければならない[11]

**<#表3>**に、これらのキャラクタセットで用いる符号化文字集合と、その選択のための制御機能を示す。

ISO-2022-JPでの「日本語版Wikipedia」という文字列の符号化を例に説明する (**<#表3>**も参照)。

図2 ISO-2022-JPによる「日本語版Wikipedia」の符号化

文字 W i k i p e d i a
機能区点行列 JIS X 0208を指示 38-92 43-60 24-76 40-39 ASCIIを指示 05/07 06/09 06/11 06/09 07/00 06/05 06/04 06/09 06/01
符号 01/11 02/04 04/02 04/06 07/12 04/11 05/12 03/08 06/12 04/08 04/07 01/11 02/08 04/02 05/07 06/09 06/11 06/09 07/00 06/05 06/04 06/09 06/01
ESC $ B F | K \ 8 l H G ESC ( B W i k i p e d i a

上図で、上段が符号化したい文字列である。「日本語版」は JIS X 0208 に含まれる文字の列、「Wikipedia」はASCIIに含まれる文字の列である。また、最初はASCIIで始まる。したがって、「日本語版」の直前と「Wikipedia」の直前に文字集合を指示するエスケープシーケンスが必要になる (ISO-2022-JP では指示が呼び出しを兼ねるので、呼び出しの制御機能は必要ない)。マルチバイト文字は区点で、シングルバイト文字は行列で表すと、中段のようになる。区点を2バイトずつで表し、全体を7ビット符号で表すと、下段のように符号化される。

表3 7ビット符号のマルチバイト用キャラクタセットでの文字集合の選択

キャラクタセット 対象言語 文字集合 文字集合選択のための制御機能
指示 呼び出し
ISO-2022-JP 日本語 ASCII G0 01/11 02/08 04/02 ESC ( B 指示が兼ねる(ロッキングシフト)
JIS C 6220-1976のラテン文字集合 (ISO/IEC 646の日本版) 01/11 02/08 04/10 ESC ( J
JIS C 6226-1978 01/11 02/04 04/00 ESC $ @
JIS X 0208-1983またはJIS X 0208:1990 01/11 02/04 04/02 ESC $ B
ISO-2022-JP-1 日本語 ISO-2022-JP に以下を追加
JIS X 0212-1990 G0 01/11 02/04 02/08 04/04 ESC $ ( D 指示が兼ねる(ロッキングシフト)
ISO-2022-JP-2 多言語 ISO-2022-JP-1 に以下を追加
GB 2312-80 G0 01/11 02/04 04/01 ESC $ A 指示が兼ねる(ロッキングシフト)
KS X 1001-1992 01/11 02/04 02/08 04/03 ESC $ ( C
ISO/IEC 8859-1 の右半分 G2 01/11 02/14 04/01 ESC . A 01/11 04/14 ESC N (シングルシフト)
ISO/IEC 8859-7 の右半分 01/11 02/14 04/06 ESC . F
ISO-2022-JP-3 日本語 ISO-2022-JP に以下を追加
JIS X 0213:2000の1面 G0 01/11 02/04 02/08 04/15 ESC $ ( O 指示が兼ねる(ロッキングシフト)
JIS X 0213:2000の2面 01/11 02/04 02/08 04/16 ESC $ ( P
ISO-2022-JP-2004 日本語 ISO-2022-JP-3 に以下を追加
JIS X 0213:2004の1面 G0 01/11 02/04 02/08 04/17 ESC $ ( Q 指示が兼ねる(ロッキングシフト)
ISO-2022-KR 韓国語 ASCII G0 初めから指示したまま 00/15 SI (ロッキングシフト)
KS X 1001-1992 G1 01/11 02/04 02/09 04/03 ESC $ ) C ただし、行の初めに置く 00/14 SO (ロッキングシフト)
ISO-2022-CN 中国語 ASCII G0 初めから指示したまま 00/15 SI (ロッキングシフト)
GB 2312-80 G1 01/11 02/04 02/09 04/01 ESC $ ) A 00/14 SO (ロッキングシフト)
CNS 11643-1992の1面 01/11 02/04 02/09 04/07 ESC $ ) G
CNS 11643-1992の2面 G2 01/11 02/04 02/10 04/08 ESC $ * H 01/11 04/14 ESC N(シングルシフト)
ISO-2022-CN-EXT 中国語 ISO-2022-CN に以下を追加
ISO-IR-165 G1 01/11 02/04 02/09 04/05 ESC $ ) E 00/14 SO (ロッキングシフト)
GB 12345-90 未定
GB 7589-87 G2 未定 01/11 04/14 ESC N(シングルシフト)
GB 13131-91 未定
GB 7590-87 G3 未定 01/11 04/15 ESC O (シングルシフト)
GB 13132-91 未定
CNS 11643-1992の3面 01/11 02/04 02/11 04/09 ESC $ + I
CNS 11643-1992の4面 01/11 02/04 02/11 04/10 ESC $ + J
CNS 11643-1992の5面 01/11 02/04 02/11 04/11 ESC $ + K
CNS 11643-1992の6面 01/11 02/04 02/11 04/12 ESC $ + L
CNS 11643-1992の7面 01/11 02/04 02/11 04/13 ESC $ + M

ISO-2022-JP

**ISO-2022-JP**は、日本語電子メールなどのための符号化表現として広く使われている。このキャラクタセットは、1986年後半ころに、当時のJUNETで、ネットニューズ電子メールで日本語を利用するための符号化の共通仕様として成立し、のちにその仕様は RFC 1468 で_Informational_として発行された。当初は「JISコード」、「JUNETコード」(junet-code) などと呼ばれたが、最終的には同RFCにおいて、MIMEのためのキャラクタセット名としてISO-2022-JPの名称が規定され[12]、後のIANA Character Setsにも収録されている。

ISO/IEC 2022 に準拠した7ビットの符号化表現だが、次のような特徴を持つ。

JUNETコードの成立当時、日本語対応端末などの機器には「漢字イン/漢字アウト」理解[7]に基づく動作をするものが複数存在し、JIS X 0208の文字要素並びの途中にSPACE (空白 02/00) や制御文字が現れると正しく処理できなかった。改行の処理についても、行末の制御文字の処理でASCIIにもどってしまうものがあった。こういった機器は、ハードウェアの組込みソフトウェアによって実現されている例も多く、その挙動を修正することはしばしば困難だった。そのため、情報交換当事者間の合意として上記の条件のもと符号化する。

また、ISO/IEC 2022 では、改訂後の文字集合を指示する場合には、指示のエスケープシーケンスの前に改訂番号を識別するエスケープシーケンス (IRR。**<#表2>**参照) を置くと定めている。たとえば、JIS X 0208:1990 (JIS X 0208 の1990年版) は JIS C 6226-1983 (同じく1983年版。後に JIS X 0208-1983に改称) の改訂である (漢字2文字が追加されている) ため、1990年版を指示する場合は、指示のエスケープシーケンスの直前に 01/11 02/06 04/00 (ESC & @) を付加する。実際にIRRを使用するかどうかは情報交換の仕様の中で定められる。RFC 1468 では、1990年版を使う場合も IRR の付加をしないことを提案している。

JIS X 0208:1997では、附属書2「RFC1468符号化表現」として ISO-2022-JP をJISの規定としたが、この符号化表現が「ISO/IEC 2022に適合するものではない」[13]と付記している。

ISO-2022-JP は、マルチバイト文字集合を扱うものとしては初のMIMEキャラクタセットであった。これ以降、中国語朝鮮語、あるいは多言語での利用を想定したマルチバイトのキャラクタセットが、ISO-2022-○○という名称でいくつか提案され、一部はRFC にもなった。これらは、ISO-2022-JP で採用された ISO/IEC 2022 の7ビット符号による符号化方式を踏襲していた。しかしその後、日本語以外の言語では、電子メールなどのキャラクタセットはEUC符号化によるものなどが事実上の標準となっていった。今日、マルチバイトで7ビットのキャラクタセットとして一般的に使われているものは、事実上、日本語用の ISO-2022-JP のみである。

Extended Unix Code (EUC)

Extended Unix Code (EUC) は、ISO/IEC 2022の機構に準じた8ビット符号の文字コード[14]である。これには以下のものが含まれる。次のような特徴を持つ。

この結果、ASCIIの文字は常に7ビット、それ以外の文字集合の文字は常に8ビットで符号化され、しかも、同じ文字集合の文字は常に同じバイト数で表現されることになる。

**<#表4>**に、これらの文字コードで用いる符号化文字集合と、その選択のための制御機能を示す。

EUC-JPでの「日本語版Wikipedia」という文字列の符号化を例に説明する (**<#表4>**も参照)。

図3 EUC-JPによる「日本語版Wikipedia」の符号化

文字 W i k i p e d i a
区点行列 38-92 43-60 24-76 40-39 05/07 06/09 06/11 06/09 07/00 06/05 06/04 06/09 06/01
符号 12/06 15/12 12/11 13/12 11/08 14/12 12/08 12/07 05/07 06/09 06/11 06/09 07/00 06/05 06/04 06/09 06/01
C6 FC CB DC B8 EC C8 C7 57 69 6B 69 70 65 64 69 61

上図で、上段が符号化したい文字列である。「日本語版」は JIS X 0208 に含まれる文字の列、「Wikipedia」はASCIIに含まれる文字の列である。ASCIIはGL領域に、JIS X 0208はGR領域に呼び出されている。したがって、「日本語版」を8ビットで、「Wikipedia」を7ビットで符号化すればよい。マルチバイト文字は区点で、シングルバイト文字は行列で表すと、中段のようになる。区点を2バイトずつで表し、全体を8ビット符号か7ビット符号で表すと、下段のように符号化される。

表4 EUCでの文字集合の選択

文字コード 対象言語 文字集合 文字集合選択のための制御機能
指示 呼び出し
EUC-CN(GB2312) 中国語簡体字 ASCII G0 指示したまま GLのまま
GB 2312-80 G1 GRのまま
EUC-JP(AJEC) 日本語 ASCII G0 指示したまま GLのまま
JIS X 0208のいずれかの版 G1 GRのまま
JIS X 0201-1976の仮名文字集合 (実装しなくてもよい) G2 08/14SS2(シングルシフトGR)
JIS X 0212-1990 (実装しなくてもよい) G3 08/15SS3(シングルシフトGR)
EUC-JISX0213 日本語 ASCII G0 指示したまま GLのまま
JIS X 0213:2000の1面 G1 GRのまま
JIS X 0201-1976の仮名文字集合 (原則として用いない) G2 08/14SS2(シングルシフトGR)
JIS X 0213:2000の2面 G3 08/15SS3(シングルシフトGR)
EUC-JIS-2004 日本語 EUC-JISX0213 のG1とG3に、それぞれJIS X 0213:2004の1面と2面を指示したもの
EUC-KR 韓国語 ASCII G0 指示したまま GLのまま
KS X 1001 G1 GRのまま
EUC-TW 中国語伝統字 ASCII G0 指示したまま GLのまま
CNS 11643の1面 G1 GRのまま
CNS 11643の2面以降(面1バイトと区点2バイト) G2 08/14SS2(シングルシフトGR)

変異

EUCは業界標準であるため、ベンダごとの独自の実装も包含するものとなっている。そのため、厳密に言えばISO/IEC 2022に準拠しているとは言えないものもある。

EUC-JP では、G1に指示する文字集合に JIS X 0208 のさまざまな版を使うものがある。1978年版 (JIS C 6226-1978)、1983年版 (JIS X 0208-1983)、1990年版 (JIS X 0208:1990) は、ISO/IEC 2022に基づく符号化文字集合としてはそれぞれ異なるものだが、いずれの文字集合を使っているかはベンダによって異なる。また、G2 のJIS X 0201片仮名文字集合や、G3 のJIS X 0212については、ベンダによっては実装していないことがある。

EUC-TW では、CNS 11643の2面以降の文字を、シングルシフト (SS2) の後に面1バイト(10/02 A2 から11/00 B0 で2面から16面を表す)と区点2バイトの合計4バイトで呼び出す。つまり、CNS 11643の2面以降をまとめてひとつの文字集合として扱っていることになる。ISO/IEC 2022に基づく符号化文字集合としては、各面はそれぞれ異なる文字集合である。

拡張ASCII

拡張ASCII」は俗称である。8ビット符号を使うシングルバイト文字集合で、ASCIIに対して上位互換となっているものを指す。<#歴史>で見たように、ISO/IEC 4873 に準拠した符号表を持てばその文字集合は ISO/IEC 2022 に準拠していると言える。しかしここでは、ISO/IEC 2022 の側から見て解説する。

一般に、拡張ASCIIとはISO/IEC 2022準拠の符号表を使う文字集合の、つぎのような符号化表現であると考えることができる。

この結果、8ビット符号で最大188個ないし190個の図形文字を利用することができ、しかもすべての文字が1バイトの固定長で表現されることになる。なお、これらの多くは、IANAキャラクタセットとして登録している。

拡張ASCIIの例としては次のようなものがある。詳細は各項目の解説を参照。

ARMSCII

アルメニア文字

ASMO 449+

アラビア語用のアラビア文字ISO/IEC 8859-6と互換性がある。

ISCII

インドの諸言語の文字。用字系の切り替えや、結合文字の表現のための特殊な図形文字を持つ。

ISO/IEC 8859 シリーズ

ヨーロッパの諸言語 (トルコ語およびエスペラントを含む) のラテン文字集合を含み、さらにアラビア文字ギリシア文字キリル文字タイ文字ヘブライ文字の文字集合をも含む。

JIS X 0201

日本語用の片仮名

PASCII

アラビア文字 (ウルドゥ語シンド語カシミール語アラビア語)。ISO/IEC 8859-6とは互換性がない。

TIS 620

タイ文字ISO/IEC 8859-11と互換性がある。

TSCII

タミル文字。ISCIIのタミル文字とは互換性がない。

はみ出し

拡張ASCIIの方法では、ラテン文字以外の文字は最大96文字までしか収録できない。またたとえラテン文字であっても、極めて多数のダイアクリティカルマーク付き文字を使う言語では、ISO/IEC 2022の8ビット符号でも文字数が不足する。かといって、マルチバイト文字集合を採用するほど多いわけでもない、という場合、図形文字をGR領域やGL領域の外にまで配置することもある。

VISCII

ベトナム語電子メールなどで広く使われているキャラクタセットである。GL領域はASCIIであるが、ダイアクリティカルマーク付き文字のうち96文字をGR領域に収容し、残りを、C1の32文字すべて、さらにはC0のうち6文字にまで割り当てている。

KOI8 系文字集合

キリル文字ロシア語用およびブルガリア語用に使われるKOI8-Rウクライナ語用に使われるKOI8-U、ウクライナ語、ベラルーシ語、ロシア語共通のKOI8-RUが代表的である。ほかにも、キリル文字を使う多くの言語用にKOI8の変種が用いられており、タジク語用 (KOI8-T)、チェコ語およびスロバキア語用 (KOI8-CS)、モンゴル語用などがある。C1領域にも記号や罫線素などを収容している。

DOSWindows、その他パソコンに組み込みのコードページ

これらのうち、シングルバイトのものの多く。C1領域にも記号や罫線素などを収容している。

Compound Text Encoding (CTEXT)

表5 Compound Text Encoding で拡張された制御機能 制御機能 説明 01/11 02/05 02/15 03/00 M L[a] 可変長の符号化システムの指示 01/11 02/05 02/15 03/01 M L[a] 1文字1バイトの符号化システムの指示 01/11 02/05 02/15 03/02 M L[a] 1文字2バイトの符号化システムの指示 01/11 02/05 02/15 03/03 M L[a] 1文字3バイトの符号化システムの指示 01/11 02/05 02/15 03/04 M L[a] 1文字4バイトの符号化システムの指示 01/11 02/05 04/07[b] UTF-8に切り替える 01/11 02/05 04/00[b] UTF-8から戻る 09/11 03/01 05/13[c] 書字方向を左から右とする 09/11 03/02 05/13[c] 書字方向を右から左とする 09/11 05/13[c] 直近に行った書字方向の指定から戻る
a M L で指示の後につづく要素のバイト数を示す。ML の最上位桁ビット (常に1) を除く合計14ビットが表す値がバイト数となる。要素内は、符号化システムの名前ではじまり、00/02 (STX) で区切ってその後に実際の符号化文字要素が続く。 b XFree86による拡張。本来の Compound Text Encoding では ISO に登録された「他の符号化システム」は使わないことになっている。 c ISO/IEC 6429の機能。

Compound Text Encoding (CTEXT) は、ISO/IEC 2022およびISO/IEC 6429の機構に準じつつそれを拡張した8ビット符号の符号化方式である。X Window Systemにおいて、クライアント間のテキスト情報の伝達や、リソース中のテキスト情報の表現に用いる。次のような特徴を持つ。

また、つぎの点で ISO/IEC 2022 に対する拡張となっている。

この結果、複数の符号化システムや文字集合が混在する場合でも、文字コード変換による情報の劣化を起こさず、またクライアントが対応していない符号化システムや文字集合の情報も伝達することが可能になっている。なお、これは異なるアプリケーションの間でのテキスト情報の交換のための符号化方式を定めたものであり、個々のアプリケーション内部でのテキスト処理の際は、適当な内部形式に変換してから処理することが想定されている。

  1. ^ 第3次規格までの標題は「情報交換用符号の拡張法」であった。
  2. ^ 初版制定当時の名称は ISO/R 646。その後 ISO 646、さらに ISO/IEC 646 と改称された。しかし、本項では原則として ISO/IEC 646 と表記する。
  3. ^ 初版制定当時の名称は ISO 2022:1973。その後1994年の第4版で ISO/IEC 2022 と改称。初版に対するJISの対応規格は JIS C 6228:1975。1982年第2版の JIS C 6228:1982 はその後 JIS X 0202:1982 と改称された。しかし、本項では原則として ISO/IEC 2022 および JIS X 0202 と表記する。
  4. ^ 初版制定当時の名称は ISO 4873。後に ISO/IEC 4873 と改称された。しかし、本項では原則として ISO/IEC 4873 と表記する。
  5. ^ これは今日では internationalization (i18n。国際化) あるいは multilingualization (m17n。多言語化) と呼ばれる考えかたであるが、当時はヨーロッパの諸言語にまたがるという意味で harmonization (調和) と呼ばれた。後に ISO/IEC 8859 はヨーロッパ諸語以外も包含するものになる。
  6. ^ 論理的には5バイト以上のエスケープシーケンスも用いられ得るが、現時点では ISO/IEC 2022 で規定されているものはない。
  7. ^ a b ISO/IEC 2022が定められた当初は、呼び出しの制御機能には SI (G1からGL領域への呼び出し) と SO (G0からGL領域への呼び出し) しかなかった。そのため、SIを「漢字イン」(制御文字やローマ字の符号表から漢字の符号表にシフトする)、SOを「漢字アウト」(漢字の符号表へのシフトから復する) とする理解が生まれ、ほかの呼び出し制御機能が定められた際には混乱を招いた。実際にはロッキングシフトでは、前の呼び出しを記憶しているわけではない。ちなみに、当時開発されたプリンタ記述言語 (プリンタを制御するための通信手順) には、この漢字イン/漢字アウトの発想が残っているものがある。
  8. ^ シングルシフトには、G2かG3から呼び出しするものしかない。また、8ビット符号の場合、GL領域に呼び出すかGR領域に呼び出すかは最初にアナウンス機能によって決定することになっている。
  9. ^ ISO/IEC TR 2375:2024 Information technology – Registered escape sequences and coded character sets
  10. ^ JIS X 0202:1991 解説「登録」による
  11. ^ a b ISO-2022-JPの場合は、JIS X 0201-1976のラテン文字集合でもよい。
  12. ^ 日本の国コード JP が含まれる名称であるのは、ネットニューズのfj.*グループの利用者およびホストコンピュータのjpドメイン名を電子メールアドレスに含む利用者らの議論による。なお文字集合として使う JIS X 0208 は日本産業規格であり、漢字仮名といった日本語に必須の文字体系のほかに、アラビア数字や種々の記号とともに頭字語用途を主として[_要出典_]一部のラテン文字ギリシア文字キリル文字も含んでいる。そのため、日本語以外の言語を部分的に表現できる。RFC 1468 の表題は Japanese Character Encoding for Internet Messages (インターネットメッセージのための日本語文字符号化) であることから、特に日本国内にかぎった利用を想定していたわけでもなく、日本語コミュニティでの利用を想定していた。
  13. ^ JIS X 0208:1997 附属書2より引用。また、同解説 3.11 も参照。
  14. ^ EUCでは_文字コード_ (英: codeset)、JISでは_符号化表現_と呼ぶ。また、一部はキャラクタセットとしてIANAが登録している。

参考文献

出典は列挙するだけでなく、脚注などを用いてどの記述の情報源であるかを明記してください。 記事の信頼性向上にご協力をお願いいたします。(2025年10月)

全般的な記述には以下の文献を参照した。

さらに、節ごとの記述で以下の文献を参照した。

<#歴史> (<#第2次規格以降の主な改正点>以外)

<#ISO国際登録簿>

<#応用例>

関連項目

外部リンク

ISO標準
国際標準一覧 · ローマ字表記国際規格一覧 · 国際電気標準会議が定める国際標準一覧
1から10000まで 1 2 3 4 5 6 7 9 16 31 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 128 216 217 226 228 233 259 269 302 306 428 518 519 639 -1 -2 -3 -5 -6 646 668 690 732 764 843 898 965 1000 1004 1007 1073-1 1413 1538 1745 1989 2014 2015 2022 2047 2108 2145 2146 2240 2281 2382 2709 2711 2788 2852 3029 3103 3166 -1 -2 -3 3297 3307 3602 3864 3901 3977 4031 4157 4217 4909 5218 5428 5775 5776 5800 5964 6166 6344 6346 6385 6425 6429 6438 6523 6709 6937 7001 7002 7010 7098 7185 7200 7498 7736 7810 7811 7812 7813 7816 7942 8000 8178 8217 8571 8473 8583 8601 8613 8632 8652 8691 8807 8820-5 8859 -1 -2 -3 -4 -5 -6 -7 -8 -8-I -9 -10 -11 -12 -13 -14 -15 -16 8879 9000/9001 9075 -10 9126 9293 9241 -210 9362 9407 9506 9529 9564 9592 9594 9660 9897 9899 9945 9984 9985 9995
10001から20000まで 10006 10021 10116 10118-3 10160 10161 10165 10179 10206 10218 10303 -11 -21 -22 -28 -238 10383 10487 10585 10589 10646 10664 10746 10861 10957 10962 10967 11073 11170 11179 11404 11519 11544 11783 11784 11785 11801 11898 11940 -2 11941 11941 (TR) 11992 12006 12100 12182 12207 12234 -2 -3 13211 -1 -2 13216-1 13250 13399 13406-2 13407 13450 13482 13485 13490 13522-5 13567 13568 13584 13616 14000 14031 14224 14229 14230 14289 14396 14443 14492 14496 -2 -3 -6 -10 -11 -12 -14 -17 -20 14644 -1 -2 -3 -4 -5 -6 -7 -8 -9 14649 14651 14698 -2 14750 14764 14882 14971 15022 15189 15288 15291 15292 15398 15408 15444 -3 15445 15438 15504 15511 15686 15693 15706 -2 15707 15765 -2 15836 15897 15919 15924 15926 15926 WIP 15930 15948 16023 16262 16612-2 16750 16949 17024 17025 17203 17369 17799 18000 18004 18014 18033 18092 18181 18245 18629 18916 19005 19011 19092 -1 -2 19100 19114 19115 19125 19136 19439 19500 19501 19502 19503 19505 19506 19507 19508 19509 19510 19600 19752 19757 -2 -3 -4 19770 19775 19784 19794-5 19831 20000
20001以上 20022 20121 21000 21047 21500 21827:2002 22000 22196 22250-1 22307 22324 23270 23271 23360 24517 24613 24617 24707 25178 25964 26000 26262 26300 26324 27000シリーズ 27000 27001:2005 27001:2013 27002 27003 27004 27005 27006 27007 27729 27799 28000 29110 29148 29199-2 29500 30170 31000 32000 37001 38500 40500 42010 45001 80000 -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14
組織 国際標準化機構
カテゴリ ISO標準 ISO 31 ISO 639 ISO 3166 ISO 8859 ISO/IEC 80000 ISO/IEC標準
関連項目: ISOで始まる記事一覧