複数の言語文字(文字集合)を切り替えて利用するための符号拡張方法。多種ある文字コードを任意に切り替えて使う符号化法を規定する。
7ビットで文字を表現する7単位符号の拡張と、8ビットを使って文字を表現する8単位符号の拡張があり、日本ではJIS X 0202が対応する。
当初はシンプルな仕様であったが、この策定時期に日本語のJIS X 0208などが重なったこともあり、これらの仕様を混ぜるに従って奇々怪々な仕様へと変貌を遂げた。
こうして現在に至ったISO/IEC 2022の仕様は大変複雑怪奇であり、仕様書をくまなく読まないと全貌が掴めないものになっている。
ISO-2022はASCIIとの互換性を高めるため、ASCIIの7ビットコードを拡張した形式を取る。
8ビットある領域(図形文字表)は4つの領域に分けられ、次のようにする。
そして別に4つのバッファ(G0、G1、G2、G3)があり、それぞれに任意の文字集合を指示(designate)あるいは割り当て(assign)ができ、割り当てられたバッファは上のGLまたはGRに呼び出す(invoke)ことで利用出来る。
初期状態ではG0がGLに、G1がGRに呼び出されている。
まず、いくつかの文字集合表の文字を混在して使うためには、文字集合表を適時切り替えて使う必要がある。
そのためには、これからどの文字集合表を使うかを指定しなければならないが、これは一般的に二段構えのしくみを取っている。
バッファに符号を指示した後は、そのバッファをGLまたはGRに割り当てる必要がある。これらは全て、エスケープシーケンスで行なわれる。
この符号列は、エスケープで始まり、中間文字を挟み、最後は終端文字で終わる。つまり、ESC<0個以上の中間文字><終端文字>となる。
中間文字は、2/0〜2/15の範囲とされ、必要に応じて挿入される。
終端文字は俗にFや<F>や(F)と書かれ、範囲は3/0〜7/15とされている。そのうち3/0〜3/15は情報交換当事者間の合意がある場合にのみ使えるプライベート文字集合用、4/0〜7/15はECMAにより割り当てが行なわれる符号である。
但し、ASCIIとの互換性を意識した関係から7/14〜7/15は使用せずに保留されている。
まず、いくつかの文字集合表の文字を混在して使うためには、文字集合表を適時切り替えて使う必要がある。そのためには、これからどの文字集合表を使うかを指定しなければならないが、これは一般的に二段構えのしくみを取っている。
7単位環境ではC0およびGLのみを使う。つまり左だけしか使わない。
バッファはG0〜G3まで4つ用意され、それぞれ任意の文字集合表を割り当てておくことができる。一度に利用できるのはそのうちの一つである。
文字集合表は二種類ある。
94図形文字集合では2/0と7/15はそれぞれ空白とDEL(削除の制御文字)として固定的に使用される。
また96図形文字集合はGR領域(後述)に限定されるためバッファG0にマッピングすることはできない。つまり7単位環境で利用するためには、後述するLocking Shiftなどの手法が必要である。
例えば、JIS X 0201ローマ字を指示する終端文字は4/10である。実際にはESC 2/8 4/10でG0に呼び出せる。
なお、JIS X 0208-1983をG0に指示するにはESC 2/4 2/8 4/2となるはずだが、歴史的事情から終端文字が4/0〜4/2の場合はESC 2/4 <F>を使うという例外があり、実際はESC 2/4 4/2となる。これに対応するASCII文字で表示すると ESC $ B となる。
次に、実際に表示処理を行なうためには、バッファに選び出された図形文字集合を7単位の図形文字表に持ち込む必要がある。
バッファから呼び出すには、G0からはSI(0/15)、G1からはSO(0/14)、G2からは1/11 6/14、G3からは1/11 6/15を使用する。
実例として、G0にJIS X 0201ローマ字を、G1にJIS X 0201カナ(通称半角カナ)を指示し、G0をGL、G1をGRに呼び出したとする。ここでSIによってGLを指示すると、4/1 4/2 4/3はローマ字の "ABC" を、SOによってGRを指示するとカナの "アイウ" を意味することになる。
このようにして、SI/SOで両者を切り換えながら使うことが可能となる。
以上の拡張法は、1バイトのうち下位7ビットだけが使われる7単位符号拡張法で、ASCIIとの互換性と親和性が高い。一方、最上位ビットも使った8単位符号拡張法もある。
指示するためのシーケンスは、左の図形文字表に対しては7単位の場合と全く同じである。そして右の図形文字表に指示するための符号が新たに用意される。
各バッファから右の図形文字表(GR)に呼び出すには、G1からは1/11 7/14、G2からは1/11 7/13、G3からは1/11 7/12を使用する。G0を右の文字集合を割り当てることはできない。この制御文字は以後再び切り換えるまで効果が続くためLocking Shift(ロッキング・シフト)と呼ばれる。
8単位符号拡張法では、左の図形文字表に呼び出された文字は7単位と同様にそのままの符号で使用する。右の図形文字表に呼び出された文字を使うには符号の最上位ビットを1に変えて表わす。
さて、こうすることでG0〜G3のバッファのうち最大2バッファを同時に利用することができるが、状況によっては3ないし4つ全てを利用したい場合も出てくる。
しかし例え1文字だけの場合でもいちいちエスケープで再呼び出しするのは冗長だし不便である。そこで、次の1文字だけをG2またはG3から呼び出す制御文字が用意されている。これは前述のLocking Shiftに対してSingle Shift(シングル・シフト)と呼ばれている。
具体的にはSS2(8/14)およびSS3(8/15)という機能文字を使うと、その次の1文字分だけ、右の図形文字表にG2やG3から呼び出すことができる。
この8単位符号の拡張法は1バイト中の8ビット全てを使う。8/0〜9/15の領域はC1領域と呼ばれ、0/0〜1/15のC0領域とは別の機能文字として使われる。
ところで上で述べたSS2(8/14)およびSS3(8/15)はC1領域の制御文字であるため、これでは7単位系で表現できない。そこで代用の方法を用いる。
7単位系でC1制御文字を表現するには、C1領域8/0〜9/15の代わりにエスケープシーケンス1/11 4/0〜5/15が使える。SS2/SS3は1/11 4/14と1/11 4/15で表現可能である。
実例として、G1にJIS X 0208、G3にJIS X 0212補助漢字を指示し、G1をGRに呼び出したとする。ここでそのままGRを用いればJIS X 0208、SS3を使うと1文字のみGRがG3(JIS X 0212)となり、補助漢字をたまに用いつつ、普段はJIS X 0208として文書を作成できる。ちなみにこれはEUC-JPと呼ばれている方法でもある。
このように、図形文字集合をバッファに指示し、次にそれを図形文字表に呼び出して使う、というのが正式であるが、それが面倒だという場合のために、特定のバッファを図形文字表に直結しておき、指示しただけで自動的に呼び出され即使用できるようにする手段も用意されている。
そのためには使う前に "アナウンサ" と呼ばれる符号列を送る。例えば1/11 2/0 4/1というアナウンサを送った場合、バッファはG0しか使わないが、そのかわりG0へ指示したものはすぐ図形文字表へ呼び出すという意味になる。
更に、情報交換当事者間の合意があればアナウンサさえも省略してよいことになっており、ISO-2022-JPなどでは、初期状態としてG0にASCII、さらに1/11 2/0 4/1というアナウンサが先行していると考え、情報交換当事者間の合意があったものとしてそれを略している。
エスケープシーケンスは、ESC(1/11)に始まり、0字以上の中間文字を挟み、終端文字に終わる。従って長さはまちまちである。
2文字のエスケープシーケンスは、ESC <F> という形式である。<F>が終端文字である。
終端文字は3種類ある。
それぞれ、ESC Fpシーケンス、ESC Feシーケンス、ESC Fsシーケンス、と呼ばれる。
3文字以上のエスケープシーケンスは、ESC <I> … <F> という形式である。<I>が中間文字、<F>が終端文字である。
終端文字は2種類ある。
エスケープ文字と終端文字の中間に置かれる文字を中間文字といい、終端文字<F>の働きを制御する。
中間文字は複数個連続することがあり、その文字は2/0〜2/15である。
最終的な中間文字が2/8〜2/15の場合が文字集合の指示であり、それ以外は特殊な機能を表わすのに使われている。
また中間文字2/4(多バイト文字集合)を使用した場合、終端文字により符号長を認識する。この時の終端文字が4/0〜5/15で2バイト、6/0〜6/15で3バイト、7/0〜7/13で4バイトである。
| 文字 | コード | 説明 |
|---|---|---|
| 2/0 | アナウンサ | |
| ! | 2/1 | 拡張された文字集合を表わす(第2中間文字) |
| $ | 2/4 | 多バイト文字集合を表わす(94×94または96×96) |
| % | 2/5 | ISO-2022以外の文字集合を表わす |
| & | 2/6 | 更新シーケンス |
| ( | 2/8 | G0に終端文字<F>の94文字集合を指示する |
| ) | 2/9 | G1に終端文字<F>の94文字集合を指示する |
| * | 2/10 | G2に終端文字<F>の94文字集合を指示する |
| + | 2/11 | G3に終端文字<F>の94文字集合を指示する |
| - | 2/13 | G1に終端文字<F>の96文字集合を指示する |
| . | 2/14 | G2に終端文字<F>の96文字集合を指示する |
| / | 2/15 | G3に終端文字<F>の96文字集合を指示する |
| 文字集合 | 指示先 | エスケープ | |
|---|---|---|---|
| 1バイト94図形文字集合 | G0 | 1/11 2/8 <F> | ESC ( <F> |
| G1 | 1/11 2/9 <F> | ESC ) <F> | |
| G2 | 1/11 2/10 <F> | ESC * <F> | |
| G3 | 1/11 2/11 <F> | ESC + <F> | |
| 1バイト96図形文字集合 | G1 | 1/11 2/13 <F> | ESC - <F> |
| G2 | 1/11 2/14 <F> | ESC . <F> | |
| G3 | 1/11 2/15 <F> | ESC / <F> | |
| 94n図形文字集合 | G0 | 1/11 2/4 2/8 <F> | ESC $ ( <F> |
| G1 | 1/11 2/4 2/9 <F> | ESC $ ) <F> | |
| G2 | 1/11 2/4 2/10 <F> | ESC $ * <F> | |
| G3 | 1/11 2/4 2/11 <F> | ESC $ + <F> | |
| 96n図形文字集合 | G1 | 1/11 2/4 2/13 <F> | ESC $ - <F> |
| G2 | 1/11 2/4 2/14 <F> | ESC $ . <F> | |
| G3 | 1/11 2/4 2/15 <F> | ESC $ / <F> | |
| 他の符号系 | 1/11 2/5(2/15)<F> | ESC ( <F> | |
| 番号 | 図形文字集合 | 終端文字 | ASCII例 |
|---|---|---|---|
| 2 | ISO-646IRV:1983 | 4/0 | ESC ( @ |
| 4 | ISO-646英国 (BS 4730) | 4/1 | ESC ( A |
| 6 | ISO-646米国 (ASCII) (X.3.4-1968) | 4/2 | ESC ( B |
| 8-1 | NATS 基本(フィンランド・スウェーデン) | 4/3 | ESC ( C |
| 8-2 | NATS 追加(フィンランド・スウェーデン) | 4/4 | ESC ( D |
| 9-1 | NATS 基本(デンマーク・ノルウェー) | 4/5 | ESC ( E |
| 9-2 | NATS 追加(デンマーク・ノルウェー) | 4/6 | ESC ( F |
| 10 | ISO-646スウェーデン基本文字 | 4/7 | ESC ( G |
| 11 | ISO-646スウェーデン名前文字 | 4/8 | ESC ( H |
| 13 | JIS X 0201片仮名 (通称半角カナ) | 4/9 | ESC ( I |
| 14 | JIS X 0201ローマ字 | 4/10 | ESC ( J |
| 21 | ISO-646 ドイツ(DIN 66 003) | 4/11 | ESC ( K |
| 16 | ISO-646 ポルトガル(ECMA) | 4/12 | ESC ( L |
| 39 | アフリカ語文字集合(DIN 31625, ISO 6438) | 4/13 | ESC ( M |
| 37 | 基本キリル文字集合(ECMA, ISO 5427:1981) | 4/14 | ESC ( N |
| 38 | 書誌用拡張図形文字集合(DIN 31624) | 4/15 | ESC ( O |
| 53 | 書誌用拡張図形文字集合(ISO 5426) | 5/0 | ESC ( P |
| 54 | 拡張キリル文字集合(ISO 5427:1981) | 5/1 | ESC ( Q |
| 25 | ISO-646フランス(NF Z 62-010-1973) [廃止] | 5/2 | ESC ( R |
| 55 | 書誌用ギリシャ文字集合(ISO 5428:1980) | 5/3 | ESC ( S |
| 57 | 支那ローマ文字(GB 1988-80) | 5/4 | ESC ( T |
| 27 | ラテン・ギリシャ文字集合(ECMA) | 5/5 | ESC ( U |
| 47 | ビューデータ テレテクスト英国 | 5/6 | ESC ( V |
| 49 | INIS IRV サブセット | 5/7 | ESC ( W |
| 31 | 書誌用ギリシャ文字集合(ISO 5428:1974) | 5/8 | ESC ( X |
| 15 | ISO-646 イタリア(ECMA) (UNI 0204-70) | 5/9 | ESC ( Y |
| 17 | ISO スペイン(ECMA) | 5/10 | ESC ( Z |
| 18 | ギリシャ文字集合(ECMA) | 5/11 | ESC ( [ |
| 19 | ラテン・ギリシャ文字集合(ECMA) | 5/12 | ESC ( \ |
| 50 | INIS 非標準拡張 | 5/13 | ESC ( ] |
| 51 | INIS キリル拡張 | 5/14 | ESC ( ^ |
| 59 | アラビア文字集合(CODAR-U) | 5/15 | ESC ( _ |
| 60 | ISO-646 ノルウェー(NS 4551 Version 1) | 6/0 | ESC ( ` |
| 61 | ノルウェー (NS 4551 Version 2) [廃止] | 6/1 | ESC ( a |
| 70 | ビデオテックス追加集合(CCITT) | 6/2 | ESC ( b |
| 71 | ビデオテックス Mosaic 第2追加(CCITT) | 6/3 | ESC ( c |
| 72 | ビデオテックス Mosaic 第3追加(CCITT) | 6/4 | ESC ( d |
| 68 | APL文字集合 | 6/5 | ESC ( e |
| 69 | ISO-646 フランス(NF Z 62-010-1982) | 6/6 | ESC ( f |
| 84 | ISO-646 ポルトガル(ECMA) | 6/7 | ESC ( g |
| 85 | ISO-646 スペイン(ECMA) | 6/8 | ESC ( h |
| 86 | ISO-646 ハンガリー(MSZ 7795/3) | 6/9 | ESC ( i |
| 88 | ギリシャ文字集合(ELOT) [廃止] | 6/10 | ESC ( j |
| 89 | アラビア(ASMO 449,ISO 9036) | 6/11 | ESC ( k |
| 90 | ISO 6937/2 補助集合 | 6/12 | ESC ( l |
| 91 | OCR-A図形文字集合(JIS C 6229:1984) [廃止] | 6/13 | ESC ( m |
| 92 | OCR-B図形文字(JIS C 6229 OCR-B) [廃止] | 6/14 | ESC ( n |
| 93 | OCR-B追加図形文字集合(JIS C 6229) [廃止] | 6/15 | ESC ( o |
| 94 | OCR用基本手書き図形文字集合(JIS C 6229) [廃止] | 7/0 | ESC ( p |
| 95 | OCR用追加手書き図形文字集合(JIS C 6229) [廃止] | 7/1 | ESC ( q |
| 96 | OCR用片仮名手書き図形文字集合(JIS C 6229)[廃止] | 7/2 | ESC ( r |
| 98 | E13B 図形文字集合(ISO 2033-1983) | 7/3 | ESC ( s |
| 99 | ビデオテックス・テレテクスト [廃止] | 7/4 | ESC ( t |
| 102 | T.61 テレテクスト基本図形文字集合 | 7/5 | ESC ( u |
| 103 | T.61 テレテクスト追加図形文字集合 | 7/6 | ESC ( v |
| 121 | カナダ図形集合 No.1(CSA Z 243.4-1985) | 7/7 | ESC ( w |
| 122 | カナダ図形集合 No.2(CSA Z 243.4-1985) | 7/8 | ESC ( x |
| 137 | T.101 データ構文 I Mosaic 1 集合 | 7/9 | ESC ( y |
| 141 | セルボクロアチア・スベロニアラテン文字 | 7/10 | ESC ( z |
| 146 | セルボクロアチアキリル文字(JUS I.B1.003) | 7/11 | ESC ( { |
| 128 | T.101 データ構文 Ⅲ 追加文字集合 | 7/12 | ESC ( | |
| 147 | マケドニアキリル文字(JUS I.B1.004) | 7/13 | ESC ( } |
| 番号 | 図形文字集合 | 終端文字 | ASCII例 |
|---|---|---|---|
| 150 | CCITT ギリシャ基本集合 | 4/0 | ESC ( ! @ |
| 151 | キューバ文字集合(NC 99-10:81) | 4/1 | ESC ( ! A |
| 170 | ISO/IEC 646-1992 invariant 文字集合 | 4/2 | ESC ( ! B |
| 207 | アイルランド ゲール語 (I.S. 433:1996) | 4/3 | ESC ( ! C |
| 230 | トルコ語アルファベット (TDS 565) | 4/4 | ESC ( ! D |
| 231 | ANSI/NISO Z39.47 (ANSEL) | 4/5 | ESC ( ! E |
| 232 | トルコ語アルファベット (TDS 616-2003) | 4/6 | ESC ( ! F |
| 番号 | 図形文字集合 | 終端文字 | ASCII例 |
|---|---|---|---|
| 111 | ECMA-113 ラテン/キリルアルファベット右部分 | 4/0 | ESC - @ |
| 100 | ISO-8859-1:1987 Latin alphabet No.1 右部分 | 4/1 | ESC - A |
| 101 | ISO-8859-2:1987 Latin alphabet No.2 右部分 | 4/2 | ESC - B |
| 109 | ISO-8859-3:1988 Latin alphabet No.3 右部分 | 4/3 | ESC - C |
| 110 | ISO-8859-4:1988 Latin alphabet No.4 右部分 | 4/4 | ESC - D |
| 123 | カナダ標準 Z 243.4一般用補助図形文字 | 4/5 | ESC - E |
| 126 | ISO-8859-7:1987 Latin/Greek alphabet(ECMA-118) | 4/6 | ESC - F |
| 127 | ISO-8859-6:1987 Latin/Arabic alphabet | 4/7 | ESC - G |
| 138 | ISO-8859-8:1988 Latin/Hebrew alphabet | 4/8 | ESC - H |
| 139 | チェコ標準 CSN 36 91 03 右部分 | 4/9 | ESC - I |
| 142 | 追加図形文字集合(ISO 6937/2 plus Addendum 1) | 4/10 | ESC - J |
| 143 | 技術用集合 | 4/11 | ESC - K |
| 144 | ISO-8859-5:1988 Latin/Cyrillic alphabet | 4/12 | ESC - L |
| 148 | ISO-8859-9:1989 Latin alphabet No.5 右部分 | 4/13 | ESC - M |
| 152 | ISO 6937-2:1983 残余文字 | 4/14 | ESC - N |
| 153 | 8ビット基本キリル文字集合(ST SEV 358-88) | 4/15 | ESC - O |
| 154 | ラテンアルファベット No.1,2,5 追加集合 | 5/0 | ESC - P |
| 155 | 基本ボックス用集合 | 5/1 | ESC - Q |
| 156 | ISO/IEC 6937:1992 補助集合 | 5/2 | ESC - R |
| 164 | CCITT ヘブライ補助集合 | 5/3 | ESC - S |
| 166 | タイ語(TIS 620-2533 1990) | 5/4 | ESC - T |
| 167 | アラビア語/フランス語/ドイツ語文字集合 | 5/5 | ESC - U |
| 157 | ISO-8859-10:1992 Latin alphabet No.6 右部分 | 5/6 | ESC - V |
| 158 | ISO-8859-10:1992 Latin alphabet No.6 補助集合 | 5/8 | ESC - X |
| 179 | Baltic Rim 補助集合(ISO 4873) | 5/9 | ESC - Y |
| 180 | ベトナム語(TCVN 5712:1993, VSCII-2) | 5/10 | ESC - Z |
| 181 | 技術文字集合 No.1:IEC Publication 1289 | 5/11 | ESC - [ |
| 182 | ラテンアルファベットNo.1 Welsh 版 | 5/12 | ESC - \ |
| 197 | Sami supplementary Latin set | 5/13 | ESC - ] |
| 198 | Latin/Hebrew alphabet | 5/14 | ESC - ^ |
| 199 | ケルト語補助ラテン文字集合 | 5/15 | ESC - _ |
| 200 | Uralic 補助キリル文字集合 | 6/0 | ESC - ` |
| 201 | Volgaic 補助キリル文字集合 | 6/1 | ESC - a |
| 203 | ヨーロッパ補助ラテン文字集合 (Latin-9) | 6/2 | ESC - b |
| 204 | Latin-1 補助集合 (ユーロ通貨符号) | 6/3 | ESC - c |
| 205 | Latin-4 補助集合 (ユーロ通貨符号) | 6/4 | ESC - d |
| 206 | Latin-7 補助集合 (ユーロ通貨符号) | 6/5 | ESC - e |
| 226 | 情報交換用ルーマニア語文字集合 | 6/6 | ESC - f |
| 208 | 情報交換用オガム文字集合 | 6/7 | ESC - g |
| 209 | Sami 補助ラテン文字集合2 | 6/8 | ESC - h |
| 227 | ISO-8859-7:2003 Latin/Greek | 6/9 | ESC - i |
| 234 | ISO-8859-8:1999 Latin/Hebrew | 6/10 | ESC - j |
| 129 | CCITT Rec.T.101 データ構文Ⅲ Mosaic 補助集合 | 7/13 | ESC - } |
| 番号 | 図形文字集合 | 終端文字 | ASCII例 |
|---|---|---|---|
| 42 | 日本語漢字(JIS C 6226-1978)[廃止] | 4/0 | ESC $ @ |
| 58 | 支那語漢字(GB 2312-80) | 4/1 | ESC $ A |
| 87,168 | 日本語漢字(JIS X 0208-1990) | 4/2 | ESC $ B |
| 149 | 朝鮮語図形文字集合(KS X 1001) | 4/3 | ESC $ ( C |
| 159 | 日本語補助漢字集合(JIS X 0212-1990) | 4/4 | ESC $ ( D |
| 165 | CCITT 支那語漢字(ISO-IR-165) | 4/5 | ESC $ ( E |
| 169 | Blissymbol 図形文字集合 | 4/6 | ESC $ ( F |
| 171 | 台湾 繁體字漢字(CNS 11643-1) | 4/7 | ESC $ ( G |
| 172 | 台湾 繁體字漢字(CNS 11643-2) | 4/8 | ESC $ ( H |
| 183 | 台湾 繁體字漢字(CNS 11643-3) | 4/9 | ESC $ ( I |
| 184 | 台湾 繁體字漢字(CNS 11643-4) | 4/10 | ESC $ ( J |
| 185 | 台湾 繁體字漢字(CNS 11643-5) | 4/11 | ESC $ ( K |
| 186 | 台湾 繁體字漢字(CNS 11643-6) | 4/12 | ESC $ ( L |
| 187 | 台湾 繁體字漢字(CNS 11643-7) | 4/13 | ESC $ ( M |
| 202 | 北朝鮮 情報交換用 標準朝鮮語図形文字集合 | 4/14 | ESC $ ( N |
| 228 | 日本語漢字(JIS X 0213:2000) 第一面 | 4/15 | ESC $ ( O |
| 229 | 日本語漢字(JIS X 0213:2000) 第二面 | 5/0 | ESC $ ( P |
| 233 | 日本語漢字(JIS X 0213:2004) 第一面 | 5/1 | ESC $ ( Q |
現在は一つも定義されていない.
エスケープシーケンスはESC 2/5 (2/15) <F>である。
| 番号 | 図形文字集合 | 終端文字 | ASCII例 |
|---|---|---|---|
| 108 | NAPLS 構文(CSA T 500-1983) | 4/1 | ESC % A |
| 178 | UCS トランスミッションフォーマット1 | 4/2 | ESC % B |
| 131 | CCITT Rec.T.101 データ構文Ⅰ | 4/3 | ESC % C |
| 145 | CCITT Rec.T.101 データ構文Ⅱ | 4/4 | ESC % D |
| 160 | CCITT Rec.T.101 フォトビデオテックス | 4/5 | ESC % E |
| 161 | CCITT Rec.T.101 オーディオデータ構文 | 4/6 | ESC % F |
| 196 | UTF-8 | 4/7 | ESC % G |
| 188 | ITU-T Rec.T.107 VEMMI データ構文 | 4/8 | ESC % H |
| 162 | ISO/IEC 10646:1933,UCS-2,Level 1 | 2/15 4/0 | ESC % / @ |
| 163 | ISO/IEC 10646:1933,UCS-4,Level 1 | 2/15 4/1 | ESC % / A |
| 125 | Virtual Terminal service Transparent Set | 2/15 4/2 | ESC % / B |
| 174 | ISO/IEC 10646:1933,UCS-2,Level 2 | 2/15 4/3 | ESC % / C |
| 175 | ISO/IEC 10646:1933,UCS-4,Level 2 | 2/15 4/4 | ESC % / D |
| 176 | ISO/IEC 10646:1933,UCS-2,Level 3 | 2/15 4/5 | ESC % / E |
| 177 | ISO/IEC 10646:1933,UCS-4,Level 3 | 2/15 4/6 | ESC % / F |
| 190 | UTF-8 Level 1 | 2/15 4/7 | ESC % / G |
| 191 | UTF-8 Level 2 | 2/15 4/8 | ESC % / H |
| 192 | UTF-8 Level 3 | 2/15 4/9 | ESC % / I |
| 193 | UTF-16 Level 1 | 2/15 4/10 | ESC % / J |
| 194 | UTF-16 Level 2 | 2/15 4/11 | ESC % / K |
| 195 | UTF-16 Level 3 | 2/15 4/12 | ESC % / L |
これを著している時点では、この規格には総じて4種類の版がある。それぞれの特徴を下記する。
最初の版。
バッファはG0とG1しかなく、94文字集合と94n文字集合しかなかった。また、多バイト文字セットはG0にしか指示できない。
この頃、バッファが二つしかなく、またそれらは符号表の今で言うGL/GRと一致していた。従って、この版ではGL、GRというものはなかった。つまり、C0、G0、C1、G1である。
94文字集合のみであったため、2/0は常にSP、7/15は常にDELであり、10/0と15/15は未定義である。
この頃のエスケープシーケンスは次の通りである。
| 符号列 | 用途 | |
|---|---|---|
| ESC 2/8 <F> | ESC ( <F> | 94文字集合をG0に指示し、呼び出す |
| ESC 2/12 <F> | ESC , <F> | |
| ESC 2/9 <F> | ESC ) <F> | 94文字集合をG1に指示し、呼び出す |
| ESC 2/13 <F> | ESC - <F> | |
| ESC 2/4 <F> | ESC $ <F> | 多バイト文字集合をG0に指示し、呼び出す |
指示と呼び出しが二つあるのは、片方が尽きた時にもう片方を使うための予約だったと考えられる。
7単位環境では、0/0から7/15の範囲内で用いる。
G0、G1はともに符号表の外部にあり、SI・SOという符号で呼び出して用いることになっていた。
SHIFT IN(0/15)でG0が呼び出され、SHIFT OUT(0/14)でG1が呼び出された。この名前からは、G0は内側(IN)のものであり、G1は外側(OUT)にあるものだ、という思想が見え隠れする。
初の改定版であり、第二版と言える。
ここでバッファとしてG2、G3が追加された。まだ96文字集合は存在しない。
多バイト文字集合に対し、G1〜G3までに指示可能になった。
追加されたエスケープシーケンスは次の通りである。
| 符号列 | 用途 | |
|---|---|---|
| ESC 2/10 <F> | ESC * <F> | 94文字集合をG2に指示する |
| ESC 2/14 <F> | ESC . <F> | |
| ESC 2/11 <F> | ESC + <F> | 94文字集合をG3に指示する |
| ESC 2/15 <F> | ESC / <F> | |
| ESC 2/4 2/12<F> | ESC $ , <F> | 多バイト文字集合をG0に指示する |
| ESC 2/4 2/9 <F> | ESC $ ) <F> | 多バイト文字集合をG1に指示する |
| ESC 2/4 2/13 <F> | ESC $ - <F> | |
| ESC 2/4 2/10 <F> | ESC $ * <F> | 多バイト文字集合をG2に指示する |
| ESC 2/4 2/14 <F> | ESC $ . <F> | |
| ESC 2/4 2/11 <F> | ESC $ + <F> | 多バイト文字集合をG3に指示する |
| ESC 2/4 2/15 <F> | ESC $ / <F> | |
また、G2、G3を用いるため、呼び出し符号が多数新規に追加された。この版から、この規格は混迷を深め始めたといえる。
LS0Rは存在しないが、これはG0がGL(2/1〜7/14)と密接な結び付きがあることを意識したものと思われる。
二回目の改定版であり、第三版と言える。
この版から、96文字集合が追加され、これに中間文字として2/13、2/14、2/15が充てられた。
この中間文字は、従来は94文字集合用の中間文字であったが、この仕様は廃止されたことになる。なお、ESC 2/4 2/12 <F>は削除された。
96文字集合導入に伴い、10/0と15/15が利用可能になった。
追加/変更されたエスケープシーケンスは次の通りである。
| 符号列 | 用途 | |
|---|---|---|
| ESC 2/13 <F> | ESC - <F> | 96文字集合をG1に指示する |
| ESC 2/14 <F> | ESC . <F> | 96文字集合をG2に指示する |
| ESC 2/15 <F> | ESC / <F> | 96文字集合をG3に指示する |
| ESC 2/10 2/8 <F> | ESC * ( <F> | 多バイト文字集合をG0に指示する |
符号に統一性を持たせるためか、互換性はこのさい目をつむり、従来のESC 2/4 <F>に代えるESC 2/10 2/8というエスケープシーケンスが追加された。
しかしこの時点で、ESC 2/4 <F>の<F>には4/0、4/1、4/2の三つが追加されていたため、これはこのまま使用されることになった。
また、96文字集合はG1〜G3にのみ指示することができ、G0には指示出来ない。そのための中間文字がないからである。
この仕様からは、G0はGL(2/1〜7/14)である、という強い意識がここから読み取れる。つまり、G0〜G4というのは決して対等なものではないという考えがあると思われる。
しかし、7単位符号で96文字集合を永続的に使うとなると、G1〜G3に指示したものをLS1〜LS3で2/0〜7/15に呼び出して使うことになる。そうなれば、どのみち聖域である2/0と7/15が潰れてしまうのは自明だろう。
そうであるなら、G0に96文字集合が指示出来てもおかしくないということになり、この件については様々な議論を巻き起こすことになった。
三回目の改定版であり、第四版と言える。この版からISO/IEC 2022になり、規格書は全面的に刷新された。
Single Shift後の文字がGLでもGRでも良いことが明記された。もって、EUCでSS2/SS3の後でGRを使うことが問題なくなった。
ISO/IEC 4873を基にした実装水準が規定された。
ASN.1構文による表現が規定された。
登録済み集合に対する更新シーケンスが新たに規定された。これは、文字集合の改定ごとに新たな終端文字を作らずに済ませるための配慮である。
終端文字が変わると実装の変更も必要な上、貴重なリソースである終端文字の領域の残も減ってしまい、宜しくないことから、この結論に至ったと思われる。
例えば、JIS X 0208-1990とJIS X 0208-1983は終端文字が同じだが、1990が1983の改定版と見なされるよう、更新シーケンスとしてESC 2/6 4/0を付加することが必要となった。