ISO/IEC 2022
読み:アイエスオウ-アイイースィー-にーまるにーにー
外語:ISO/IEC 2022

 複数の言語文字(文字集合)を切り替えて利用するための符号拡張方法の一つ。
目次

概要

用途
 ASCIIの上位互換で、多種ある文字コードを任意に切り替えて使う符号化法を規定する。
 7ビットだけで文字を表現する「7ビット符号」と、8ビットを使って文字を表現する「8ビット符号」がある。
 7ビット符号は、32個または33個の制御文字基本集合の領域(C0)、および94個または96個の図形文字集合の領域(CL領域)を持つ。
 8ビット符号はこれに、32個または33個の制御文字補助集合の領域(C1)、および94個または96個の図形文字集合の領域(CR領域)を追加する。

複雑
 当初はシンプルな仕様であったが、この策定時期に日本語のJIS X 0208などが重なったこともあり、これらの仕様を混ぜるに従って奇々怪々な仕様へと変貌を遂げた。
 こうして現在に至ったISO/IEC 2022の仕様は大変複雑怪奇であり、仕様書をくまなく読まないと全貌が掴めないものになっている。

沿革

メカニズム

基本
 7ビットだけ使うものと、8ビット全てを使うものとがある。
 7ビット符号は、32個の制御文字基本集合の領域(C0)、および94個または96個の図形文字集合の領域(CL領域)を持つ。
 8ビット符号はこれに、32個の制御文字補助集合の領域(C1)、および94個または96個の図形文字集合の領域(CR領域)を追加する。

領域の構成
 ASCIIとの互換性を維持しながら拡張するため、ASCIIの7ビットコードを拡張した形式を取る。
 8ビットある領域は4つの領域に分けられ、次のようにする。
 制御文字はCL/CR、図形文字はGL/GRである。
 制御文字は、CLは常にバッファーC0、CRは常にバッファーC1に固定されており、変更できない。
 図形文字は、4つのバッファー(G0G1G2G3)があり、それぞれに任意の文字集合を指示(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 Internationalにより割り当てが行なわれる符号である。
 但し、ASCIIとの互換性を意識した関係から7/14〜7/15は使用せずに保留されている。

7ビット符号の利用法

構造
 まず、いくつかの文字集合表の文字を混在して使うためには、文字集合表を適時切り替えて使う必要がある。そのためには、これからどの文字集合表を使うかを指定しなければならないが、これは一般的に二段構えのしくみを取っている。
 

使う文字表とバッファー
 7ビット符号ではCLおよびGLのみを使う。つまり左だけしか使わない。
 CLは常にC0であり変更できないため、CL=C0である。0/0〜1/31の32個の領域には、常に制御文字基本集合の領域(C0)が割り当てられている。
 図形文字のバッファーはG0〜G3まで4つ用意され、それぞれ任意の文字集合表を割り当てておくことができる。一度に利用できるのはそのうちの一つである。
 文字集合表は二種類ある。
 94図形文字集合では2/0と7/15はそれぞれ空白とDEL(削除の制御文字)として固定的に使用される。
 また96図形文字集合はGR領域(後述)に限定されるためバッファーG0にマッピングすることはできない。つまり7ビット符号で利用するためには、後述するLocking Shiftなどの手法が必要である。

7ビット実例
 例えば、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ビットの図形文字表に持ち込む必要がある。後述する8ビット符号では図形文字表はGL/TRの二つあるが、7ビット符号では一つしかないので、GL/GRの区別をする必要はない。
 バッファーから呼び出すには、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カナ(通称半角カナ)を指示したとする。ここでSIによってG0を呼び出すと、4/1 4/2 4/3はローマ字の "ABC" を、SOによってG1を呼び出すとカナの "アイウ" を意味することになる。
 このようにして、SI/SOで両者を切り換えながら使うことが可能となる。
 
 以上の拡張法は、1バイトのうち下位7ビットだけが使われるビット符号の拡張法で、ASCIIとの互換性と親和性が高い。一方、最上位ビットも使った8ビット符号の拡張法もある。

8ビット符号の利用法
 8ビット符号拡張法は、7ビット符号と大差は無いが、図形文字表が左と右の二つある点が異なる。以降、左をGL、右をGRと呼ぶ。
 

図形文字表とバッファー
 指示するためのシーケンスは、左の図形文字表に対しては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ビット範囲を7ビット互換条件で使う
 この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で表現可能である。

8ビット実例
 実例として、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と呼ばれている方法でもある。
 

エスケープシーケンス

エスケープの仕様

書式
 エスケープシーケンスは、ESC(1/11)に始まり、0字以上の中間バイトを挟み、終端バイトに終わる。従って長さはまちまちである。
 中間バイトは2/0〜2/15の16種類であり、<I>で表わす。
 終端バイトは3/0〜7/14の79種類であり、<F>で表わす。
 中間バイト/終端バイト問わず、エスケープシーケンス中に0/0〜1/15と、7/15を含んではならない。また8ビット符号の場合、8/0〜15/15も含めてはならない。もし万一、これらを含むシーケンスを受け取った場合、処理系は何らかのエラー処理を要するだろうが、規格としてはその動作については未定義である。

型の指示
 「エスケープシーケンスの型」は、エスケープの直後に来る中間バイトによって決定される。中間バイトは16種類なので、エスケープシーケンスは16型あるといえる。
 エスケープシーケンスの各バイトの意味は、この後に述べるように定義される。但し、エスケープシーケンスの意味は、個々のバイトに与えられた意味に関係なく、バイト列全体で規定される。
 ESC(1/11)に続く文字は、2/0〜7/14である。
 nFは、<I>、いわゆる「中間文字」で、その先頭バイトである。
 Fp/Fe/Fsの第2バイトは終端バイト、つまり「終端文字」でもある。

nF型エスケープシーケンス
 nF型エスケープシーケンスは、制御機能を有する3F型を除き、各種の符号識別機能を表現するために用いられる。
 終端文字Fに応じて、二つの副型に分けられる。
 先頭の<I>の機能は、次の通りである。
先頭のIバイト2番目のIバイト機能
文字コード規則用法
0F型 2/0Nアナウンサ・コード・ストラクチャ
1F型!2/1ORC0に終端文字<F>を指示する
2F型"2/2ORC1に終端文字<F>を指示する
3F型#2/3OR単独制御機能
4F型$2/4YR複数バイト図形文字集合(94n/96n)
5F型%2/5OR、SISO-2022以外の文字集合の指示
6F型&2/6N改訂版の識別
7F型'2/7N(将来の標準化のために保留)
8F型(2/8OR、SG0に終端文字<F>の94文字集合を指示する
9F型)2/9OR、SG1に終端文字<F>の94文字集合を指示する
10F型*2/10OR、SG2に終端文字<F>の94文字集合を指示する
11F型+2/11OR、SG3に終端文字<F>の94文字集合を指示する
12F型,2/12N(将来の標準化のために保留)
13F型-2/13OR、SG1に終端文字<F>の96文字集合を指示する
14F型.2/14OR、SG2に終端文字<F>の96文字集合を指示する
15F型/2/15OR、SG3に終端文字<F>の96文字集合を指示する
 それぞれ、「規則」に応じて継続するバイトを決める。
 終端バイトがFpの場合の2番目(および後続)のIバイトは、規格では定義しない。
 終端バイトがFtの場合、「規則」と「用法」の欄は、2番目(および後続)のIバイトに関連し、次のように規定される。
 「規則」は次の通りとする。
 「用法」は次の通りとする。

4F型エスケープシーケンス
 4F型のエスケープシーケンスの2番目の<I>バイトと、その機能は、次の通りである。
 但し、<F>が4/0、4/1、または4/2の場合は、2番目の<I>バイトの2/8は使用しない。

複数バイト集合の大きさ
 複数バイト集合、つまり94n文字、96n文字の図形文字集合の大きさは、指示する際に使う終端バイト<F>によって決定される。
 <F>の範囲は3/0〜7/14であり、次の通りとする。

動的再指定可能文字セット(DRCS)
 動的再指定可能文字セット(DRCS)とは、いわゆる「ユーザー定義外字」のことである。視覚的外観をあらかじめ指定しておくことで、文字集合とする。
 一度指定されると、DRCSは、適切なエスケープシーケンスでG0〜G3の符号要素として指示できる、文字集合のレパートリーの一つとしてみなされる。
 DRCSの指示は、1バイトの図形文字表(GnDm機能、後述)では2番目の<I>バイトに、複数バイトの図形文字表(GnDMm機能、後述)では3番目の<I>バイトに、2/0を挿入することで行なう。
 この場合、DRCS自体は、<F>バイト(存在するなら後続する<I>バイトも含めて)で識別する。<F>バイトは利用者が割り当て、情報交換当事者間の合意に基づいて利用する。
 <F>バイトは、4/0から順番に割り当てて使うことが推奨されている。4/0〜7/14まで利用可能なため、94/94n、96/96n、おのおので63個までは、<I>バイトを使用しなくても<F>バイトだけで識別できる。

指示エスケープの例
 指示のエスケープシーケンスの使用例は次の通りである。
 1バイトのものを総じてGnDm機能、複数バイトのものを総じてGnDMm機能という。
略号文字集合指示先エスケープ
GZD41バイト94図形文字集合G01/11 2/8 <F>ESC ( <F>
G1D4G11/11 2/9 <F>ESC ) <F>
G2D4G21/11 2/10 <F>ESC * <F>
G3D4G31/11 2/11 <F>ESC + <F>
G1D61バイト96図形文字集合G11/11 2/13 <F>ESC - <F>
G2D6G21/11 2/14 <F>ESC . <F>
G3D6G31/11 2/15 <F>ESC / <F>
GZDM494n図形文字集合G01/11 2/4 2/8 <F>ESC $ ( <F>
G1DM4G11/11 2/4 2/9 <F>ESC $ ) <F>
G2DM4G21/11 2/4 2/10 <F>ESC $ * <F>
G3DM4G31/11 2/4 2/11 <F>ESC $ + <F>
G1DM696n図形文字集合G11/11 2/4 2/13 <F>ESC $ - <F>
G2DM6G21/11 2/4 2/14 <F>ESC $ . <F>
G3DM6G31/11 2/4 2/15 <F>ESC $ / <F>
他の符号系 1/11 2/5(2/15)<F>ESC ( <F>

アナウンス機能

手順
 ISO/IEC 2022で文字を使う時の、最も基本的な使い方は、次のようになる。
  1. 図形文字集合をバッファーに指示する
  2. バッファーを図形文字表に呼び出す
  3. 使う
 指示は当該のエスケープシーケンスで行ない、呼出は基本的にはロッキングシフトで行なうことになる。
 しかし、この手順は面倒であるため、それを省略する手順が用意されている。

用例
 具体的には、特定のバッファーを図形文字表に直結しておき、「指示しただけで自動的に呼び出され即使用できる」ようにする。
 この目的のために「アナウンサ」と呼ばれる符号列を使用し、ESC 2/0 <F>という符号列で機能を指定する。
 ISO/IEC 2022:1994(JIS X 0202:1998)では、途中に抜けはあるが4/0〜5/12まで、多彩な利用方法が規定されている。

省略も可能
 情報交換当事者間の合意があれば、アナウンサさえも省略してよいことになっている。
 例えば、ISO-2022-JPなどでは、初期状態としてG0にASCII、さらに1/11 2/0 4/1というアナウンサが先行していると考え、情報交換当事者間の合意があったものとしてそれを略している。

F=4/1
 ISO-2022-JPで使用しているESC 2/0 4/1を例とする。
 この場合、バッファーはG0しか使わないが、その代わりG0へ指示したものはすぐGL領域へ呼び出す。ロッキングシフトは使用しない。
 また、8ビット符号では、GR領域は使用しない。

主要な符号
 ISO/IEC 2022に準拠した、または非互換の独自拡張をした等の、主な符号系は次の通りである。言語ごとに分類する(順不同)。

終端文字一覧表

1バイト領域94図形文字集合
番号図形文字集合終端文字ASCII例
2ISO-646IRV:19834/0ESC ( @
4ISO-646-GB 英国 (BS 4730)4/1ESC ( A
6ISO-646-US 米国 (ASCII) (X.3.4-1968)4/2ESC ( B
8-1NATS-SEFI (フィンランド・スウェーデン)4/3ESC ( C
8-2NATS-SEFI-ADD (フィンランド・スウェーデン)4/4ESC ( D
9-1NATS-DANO (デンマーク・ノルウェー)4/5ESC ( E
9-2NATS-DANO-ADD (デンマーク・ノルウェー)4/6ESC ( F
10ISO-646-SE スウェーデン基本文字4/7ESC ( G
11ISO-646-SE2 スウェーデン名前文字4/8ESC ( H
13JIS X 0201片仮名 (通称半角カナ)4/9ESC ( I
14JIS X 0201ローマ字4/10ESC ( J
21ISO-646-DE ドイツ(DIN 66 003)4/11ESC ( K
16ISO-646-PT ポルトガル(ECMA, 1976)4/12ESC ( L
39アフリカ語文字集合(DIN 31625, ISO 6438)4/13ESC ( M
37基本キリル文字集合(ECMA, ISO 5427:1981)4/14ESC ( N
38書誌用拡張図形文字集合(DIN 31624)4/15ESC ( O
53書誌用拡張図形文字集合(ISO 5426)5/0ESC ( P
54拡張キリル文字集合(ISO 5427:1981)5/1ESC ( Q
25ISO-646-FR フランス(NF Z 62-010-1973) [廃止]5/2ESC ( R
55書誌用ギリシャ文字集合(ISO 5428-1980)5/3ESC ( S
57ISO-646-CN 支那ローマ文字(GB 1988-80)5/4ESC ( T
27ラテン・ギリシャ文字集合(ECMA)5/5ESC ( U
47ビューデータ テレテクスト英国5/6ESC ( V
49INIS IRV サブセット5/7ESC ( W
31書誌用ギリシャ文字集合(ISO 5428-1974)5/8ESC ( X
15ISO-646-IT イタリア(ECMA) (UNI 0204-70)5/9ESC ( Y
17ISO-646-ES スペイン(ECMA)5/10ESC ( Z
18ギリシャ文字集合(ECMA)5/11ESC ( [
19ラテン・ギリシャ文字集合(ECMA)5/12ESC ( \
50INIS 非標準拡張5/13ESC ( ]
51INIS キリル拡張5/14ESC ( ^
59アラビア文字集合(CODAR-U)5/15ESC ( _
60ISO-646-NO ノルウェー(NS 4551 Version 1)6/0ESC ( `
61ISO-646-NO2 ノルウェー (NS 4551 Version 2) [廃止]6/1ESC ( a
70ビデオテックス追加集合(CCITT)6/2ESC ( b
71ビデオテックス Mosaic 第2追加(CCITT)6/3ESC ( c
72ビデオテックス Mosaic 第3追加(CCITT)6/4ESC ( d
68APL文字集合6/5ESC ( e
69ISO-646-FR フランス(NF Z 62-010-1982)6/6ESC ( f
84ISO-646-PT ポルトガル(ECMA, 1984)6/7ESC ( g
85ISO-646-ES2 スペイン(ECMA)6/8ESC ( h
86ISO-646-HU ハンガリー(MSZ 7795/3)6/9ESC ( i
88ギリシャ文字集合(ELOT) [廃止]6/10ESC ( j
89アラビア(ASMO 449,ISO 9036)6/11ESC ( k
90ISO 6937/2 補助集合6/12ESC ( l
91OCR-A図形文字集合(JIS C 6229:1984) [廃止]6/13ESC ( m
92OCR-B図形文字(JIS C 6229 OCR-B) [廃止]6/14ESC ( n
93OCR-B追加図形文字集合(JIS C 6229) [廃止]6/15ESC ( o
94OCR用基本手書き図形文字集合(JIS C 6229) [廃止]7/0ESC ( p
95OCR用追加手書き図形文字集合(JIS C 6229) [廃止]7/1ESC ( q
96OCR用片仮名手書き図形文字集合(JIS C 6229)[廃止]7/2ESC ( r
98E13B 図形文字集合(ISO 2033-1983)7/3ESC ( s
99ビデオテックス・テレテクスト [廃止]7/4ESC ( t
102T.61 テレテクスト基本図形文字集合7/5ESC ( u
103T.61 テレテクスト追加図形文字集合7/6ESC ( v
121ISO-646-CA カナダ図形集合 No.1(CSA Z 243.4-1985)7/7ESC ( w
122ISO-646-CA2 カナダ図形集合 No.2(CSA Z 243.4-1985)7/8ESC ( x
137T.101 データ構文 I Mosaic 1 集合7/9ESC ( y
141ISO-646-YU セルボクロアチア・スベロニアラテン文字7/10ESC ( z
146セルボクロアチアキリル文字(JUS I.B1.003)7/11ESC ( {
128T.101 データ構文 III 追加文字集合7/12ESC ( |
147マケドニアキリル文字(JUS I.B1.004)7/13ESC ( }

1バイト領域 第2中間文字2/1の94図形文字集合
番号図形文字集合終端文字ASCII例
150CCITT ギリシャ基本集合4/0ESC ( ! @
151ISO-646-CU キューバ文字集合(NC 99-10:81)4/1ESC ( ! A
170ISO/IEC 646-1992 invariant 文字集合4/2ESC ( ! B
207アイルランド・ゲール語 (I.S. 433:1996)4/3ESC ( ! C
230トルコ語アルファベット (TDS 565)4/4ESC ( ! D
231ANSI/NISO Z39.47 (ANSEL)4/5ESC ( ! E
232トルコ語アルファベット (TDS 616-2003)4/6ESC ( ! F

1バイト領域 96図形文字集合
番号図形文字集合終端文字ASCII例
111ECMA-94 ラテン/キリルアルファベット右部分4/0ESC - @
100ISO-8859-1:1987 Latin alphabet No.1 右部分4/1ESC - A
101ISO-8859-2:1987 Latin alphabet No.2 右部分4/2ESC - B
109ISO-8859-3:1988 Latin alphabet No.3 右部分4/3ESC - C
110ISO-8859-4:1988 Latin alphabet No.4 右部分4/4ESC - D
123カナダ標準 Z 243.4一般用補助図形文字4/5ESC - E
126ISO-8859-7:1987 Latin/Greek alphabet(ECMA-118)4/6ESC - F
127ISO-8859-6:1987 Latin/Arabic alphabet4/7ESC - G
138ISO-8859-8:1988 Latin/Hebrew alphabet4/8ESC - H
139チェコ標準 〓SN 36 91 03 右部分4/9ESC - I
142追加図形文字集合(ISO 6937/2 plus Addendum 1)4/10ESC - J
143技術用集合4/11ESC - K
144ISO-8859-5:1988 Latin/Cyrillic alphabet4/12ESC - L
148ISO-8859-9:1989 Latin alphabet No.5 右部分4/13ESC - M
152ISO 6937-2:1983 残余文字4/14ESC - N
1538ビット基本キリル文字集合(ST SEV 358-88)4/15ESC - O
154ラテンアルファベット No.1,2,5 追加集合5/0ESC - P
155基本ボックス用集合5/1ESC - Q
156ISO/IEC 6937:1992 補助集合5/2ESC - R
164CCITT ヘブライ補助集合5/3ESC - S
166タイ語(TIS 620-2533 1990)5/4ESC - T
167アラビア語/フランス語/ドイツ語文字集合5/5ESC - U
157ISO-8859-10:1992 Latin alphabet No.6 右部分5/6ESC - V
158ISO-8859-10:1992 Latin alphabet No.6 補助集合5/8ESC - X
179ISO-8859-13(ISO 4873)5/9ESC - Y
180ベトナム語(TCVN 5712:1993, VSCII-2)5/10ESC - Z
181技術文字集合 No.1:IEC Publication 12895/11ESC - [
182ラテンアルファベットNo.1 Welsh 版5/12ESC - \
197サーミ語 補助ラテン集合5/13ESC - ]
198Latin/Hebrew alphabet5/14ESC - ^
199ISO-8859-14 ケルト語補助ラテン文字集合5/15ESC - _
200ウラル諸語 補助キリル文字集合6/0ESC - `
201ヴォルガ川沿岸フィン諸語 補助キリル文字集合6/1ESC - a
203ISO-8859-15 補助ラテン文字集合 (Latin-9)6/2ESC - b
204Latin-1補助集合 (ISO-8859-1+ユーロ通貨符号)6/3ESC - c
205Latin-4補助集合 (ISO-8859-4+ユーロ通貨符号)6/4ESC - d
206Latin-7補助集合 (ISO-8859-13+ユーロ通貨符号)6/5ESC - e
226ISO-8859-16 情報交換用ルーマニア語文字集合6/6ESC - f
208情報交換用オガム文字集合6/7ESC - g
209サーミ語 補助ラテン文字集合26/8ESC - h
227ISO-8859-7:2003 Latin/Greek6/9ESC - i
234ISO-8859-8:1999 Latin/Hebrew6/10ESC - j
129CCITT Rec.T.101 データ構文III Mosaic 補助集合7/13ESC - }

複数バイト領域94×94図形文字集合
番号図形文字集合終端文字ASCII例
42日本語漢字(JIS C 6226-1978)[廃止]4/0ESC $ @
58支那語漢字(GB 2312-80)4/1ESC $ A
87,168日本語漢字(JIS X 0208-1990)4/2ESC $ B
149朝鮮語図形文字集合(KS X 1001)4/3ESC $ ( C
159日本語補助漢字集合(JIS X 0212-1990)4/4ESC $ ( D
165CCITT 支那語漢字(ISO-IR-165)4/5ESC $ ( E
169Blissymbol 図形文字集合4/6ESC $ ( F
171台湾 正体字漢字(CNS 11643-1)4/7ESC $ ( G
172台湾 正体字漢字(CNS 11643-2)4/8ESC $ ( H
183台湾 正体字漢字(CNS 11643-3)4/9ESC $ ( I
184台湾 正体字漢字(CNS 11643-4)4/10ESC $ ( J
185台湾 正体字漢字(CNS 11643-5)4/11ESC $ ( K
186台湾 正体字漢字(CNS 11643-6)4/12ESC $ ( L
187台湾 正体字漢字(CNS 11643-7)4/13ESC $ ( M
202北朝鮮 情報交換用 標準朝鮮語図形文字集合4/14ESC $ ( N
228日本語漢字(JIS X 0213:2000) 第一面4/15ESC $ ( O
229日本語漢字(JIS X 0213:2000) 第二面5/0ESC $ ( P
233日本語漢字(JIS X 0213:2004) 第一面5/1ESC $ ( Q

複数バイト領域96×96図形文字集合
 現在は一つも定義されていない.

登録済みの他の符号系(ISO-2022 とは異なる他の符号系)
 エスケープシーケンスはESC 2/5 (2/15) <Ft>である。
 なお、ESC 2/5 <Ft>の符号は、ESC 2/5 4/0で再びISO/IEC 2022に戻れることになっている(間に2/15を挟むものは戻らない)。
 これは、ISO/IEC 2022のDOCS(DESIGNATE OTHER CODING SYSTEM)という他の符号化システムと併用するための機能の一つである。
番号図形文字集合終端文字ASCII例
 ISO/IEC 20224/0ESC % @
108NAPLPS 構文(CSA T 500-1983)4/1ESC % A
178UTF-14/2ESC % B
131CCITT Rec.T.101 データ構文I4/3ESC % C
145CCITT Rec.T.101 データ構文II4/4ESC % D
160CCITT Rec.T.101 フォトビデオテックス4/5ESC % E
161CCITT Rec.T.101 オーディオデータ構文4/6ESC % F
196UTF-84/7ESC % G
188ITU-T Rec.T.107 VEMMI データ構文4/8ESC % H
162ISO/IEC 10646:1933,UCS-2,Level 12/15 4/0ESC % / @
163ISO/IEC 10646:1933,UCS-4,Level 12/15 4/1ESC % / A
125Virtual Terminal service Transparent Set2/15 4/2ESC % / B
174ISO/IEC 10646:1933,UCS-2,Level 22/15 4/3ESC % / C
175ISO/IEC 10646:1933,UCS-4,Level 22/15 4/4ESC % / D
176ISO/IEC 10646:1933,UCS-2,Level 32/15 4/5ESC % / E
177ISO/IEC 10646:1933,UCS-4,Level 32/15 4/6ESC % / F
190UTF-8 Level 12/15 4/7ESC % / G
191UTF-8 Level 22/15 4/8ESC % / H
192UTF-8 Level 32/15 4/9ESC % / I
193UTF-16 Level 12/15 4/10ESC % / J
194UTF-16 Level 22/15 4/11ESC % / K
195UTF-16 Level 32/15 4/12ESC % / L

版ごとの差異
 これを著している時点では、この規格には総じて4種類の版がある。それぞれの特徴を下記する。

ISO 2022:1973

初版
 最初の版である。
 バッファーはG0とG1しかなく、94文字集合と94n文字集合しかなかった。
 また、複数バイト文字集合はG0にしか指示できない。このため、ESC 2/4 <F>という3バイトのシーケンスで指示した。<F>は4/0、4/1、4/2までが割り当てられたが、以降の更新でG1以降にも指示可能になっても、互換性のためこの仕様は残された。

8ビット符号
 この頃、バッファーが二つしかなく、またそれらは符号表の今で言う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ビット符号
 7ビット符号環境では、0/0から7/15の範囲内で用いる。
 G0、G1はともに符号表の外部にあり、SISOという符号で呼び出して用いることになっていた。
 SHIFT IN(0/15)でG0が呼び出され、SHIFT OUT(0/14)でG1が呼び出された。この名前からは、G0は内側(IN)のものであり、G1は外側(OUT)にあるものだ、という思想が見え隠れする。

ISO 2022:1982

改訂
 初の改定版であり、第二版と言える。
 ここでバッファーとして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)と密接な結び付きがあることを意識したものと思われる。

ISO 2022:1986
 二回目の改定版であり、第三版と言える。

特徴
 この版から、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/4 2/8 <F>ESC * ( <F>複数バイト文字集合をG0に指示する
 符号に統一性を持たせるためか、互換性はこのさい目をつむり、従来のESC 2/4 <F>に代えるESC 2/4 2/8というエスケープシーケンスが追加された。
 しかしこの時点で、ESC 2/4 <F>の<F>には4/0、4/1、4/2の三つが追加されていたため、これはこのまま使用されることになった。

96文字集合
 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:1994
 三回目の改定版であり、第四版と言える。この版からISO/IEC 2022になり、規格書は全面的に刷新された。
 Single Shift後の文字がGLでもGRでも良いことが明記された。もって、EUCでSS2/SS3の後でGRを使うことが問題なくなった。
 ISO/IEC 4873を基にした実装水準が規定された。
 ASN.1構文による表現が規定された。
 登録済み集合に対する更新シーケンスが新たに規定された。これは、文字集合の改定ごとに新たな終端文字を作らずに済ませるための配慮である。
 終端文字が変わると実装の変更も必要な上、貴重なリソースである終端文字の領域の残も減ってしまい、宜しくないことから、この結論に至ったと思われる。
 例えば、JIS X 0208-1990JIS X 0208-1983は終端文字が同じだが、1990が1983の改定版と見なされるよう、更新シーケンスとしてESC 2/6 4/0を付加することが必要となった。

再検索