## ISO2022についての簡潔な記述 ## 93.2.28 modified by K.Handa ## 93.8.5 modified by K.Handa ## 和訳 1993080541 ZIC # 以下は、簡単に理解することを目的としたため、 # 「厳密ではない」部分がある。完全な理解のためには、 # ISO2022のオリジナル・ドキュメントを参照して欲しい。 # (訳註: JISX0202でも同じ) 文字集合(character set; charsetと略す)は、その文字集合の文字数に応じて、 次に挙げる4種に分類される。 94文字集合 96文字集合 94×94文字集合 96×96文字集合 94文字集合: ASCII(B), left(J) and right(I) half of JISX0201, ... 96文字集合: Latin-1(A), Latin-2(B), Latin-3(C), ... 94×94文字集合: GB2312(A), JISX0208(B), KSC5601(C), ... 96×96文字集合: 現時点では該当なし 夫々の文字集合の名前に続く括弧中の文字は、 その文字集合の識別子と看做せる終端文字である。 をそれぞれの文字集合に割り当てるのは、ECMAである。 は、0x30..0x7Fの範囲にあるが、 内0x30..0x3Fはプライベート文字集合にのみ使用する。 註: ECMA = European Computer Manufacturers Association (欧州計算機製造業者協会) G0, G1, G2, G3と呼ばれる4つの文字集合用のレジスタがあり、 このうちの1つに任意の文字集合を指示(designate; 或は割り当てassign)できる。 (1バイト)コード領域は、C0, GL, C1, GRの4つの領域に分割される。 GLとGRとは、それぞれレジスタの文字集合を呼び出す(invoke)場所である。 C0: 0x00 - 0x1F GL: 0x20 - 0x7F C1: 0x80 - 0x9F GR: 0xA0 - 0xFF 通常、初期状態においては、G0がGLに、G1がGRに呼出されている。 ISO2022は、7ビット環境と8ビット環境とを区別する。 7ビット環境下では、C0とGLのみ使用する。 指示(designation)は、 ESC [I] I という形のエスケープ・シーケンスで行う。 訳註: [I] は、複数連続する可能性のある'I'の意味 ここで'I'は中間文字(intermediate characters)である。 中間文字の意味は、 $ [0x24]: 多バイト文字集合を表す(94×94或は96×96) ( [0x28]: G0に終端文字がであるような94文字集合を指示する ) [0x29]: G1に終端文字がであるような94文字集合を指示する * [0x2A]: G2に終端文字がであるような94文字集合を指示する + [0x2B]: G3に終端文字がであるような94文字集合を指示する - [0x2D]: G1に終端文字がであるような96文字集合を指示する . [0x2E]: G2に終端文字がであるような96文字集合を指示する / [0x2F]: G3に終端文字がであるような96文字集合を指示する 次の規則はISO2022では許していないが、Muleでは使用する。 , [0x2C]: G0に終端文字がであるような96文字集合を指示する 指示の例を挙げる。 ESC ( B : ASCII を G0 に指示 ESC - A : Latin-1 を G1 に指示 ESC $ ( A 或は ESC $ A : GB2312 を G0 に指示 ESC $ ( B 或は ESC $ B : JISX0208 を G0 に指示 ESC $ ) C : KSC5601 を G1 に指示 G2或はG3に指示した文字集合を使用する場合、 及び7ビット環境下でG1に指示した文字集合を使用する場合には、 G1, G2, G3のいづれかをGLに明示的に呼び出す必要がある。 2通りの呼び出し方法があって、 呼出方法には、ロッキング・シフト(以後ずっと)と シングル・シフト(直後の1文字のみ)との2通りがある。 ロッキング・シフトは、次のように行う: SI 或は LS0: G0をGLに呼び出す SO 或は LS1: G1をGLに呼び出す LS2: G2をGLに呼び出す LS3: G3をGLに呼び出す LS1R: G1をGRに呼び出す LS2R: G2をGRに呼び出す LS3R: G3をGRに呼び出す シングル・シフトは、次のように行う: SS2 或は ESC N: G2をGLに呼び出す SS3 或は ESC O: G3をGLに呼び出す ISO2022に沿った多国語の表現(encoding)方法は多数あることに気付くだろう。 現在世界では、Xのコンパウンド・テキスト、日本のJUNETコード、 所謂EUC(Extended UNIX Code)等の多種類の符号系(coding system)が存在し、 これら全てがISO2022の変種(variant)である。 Muleにおいては、ISO2022を次の属性で特徴付けた: 1. G0からG3への初期指示 2. 日本語と中国語の簡略指示(EUCのこと) 3. 制御文字以前にASCIIをG0に指示すべきか? 4. 行末時点で、ASCIIをG0に指示すべきか? 5. 7ビット環境か、8ビット環境か 6. ロッキング・シフトを使用するか否か 次の2属性は、日本語にのみ当てはまる: 7. ASCII を使うか JIS0201-1976-Romanを使うか 8. JISX0208-1983 を使うか JISX0208-1976を使うか これら属性を指示することで、あらゆるISO2022の変種を作ることができる。 幾つか例を挙げる。 *junet* -- JUNETで使用する符号系 1. G0 <- ASCII, G1..3 <- 使用せず 2. Yes. 3. Yes. 4. Yes. 5. 7ビット環境 6. No. 7. ASCIIを使用 8. JISX0208-1983を使用 *ctext* -- コンパウンド・テキスト 1. G0 <- ASCII, G1 <- Latin-1, G2,3 <- 使用せず 2. No. 3. No. 4. Yes. 5. 8ビット環境 6. No. 7. ASCIIを使用 8. JISX0208-1983を使用 *euc-china* -- 中国語EUC. 一般には"GB encoding"と呼ばれるが、 この名称は誤解を招くかも知れない。 1. G0 <- ASCII, G1 <- GB2312, G2,3 <- 使用せず 2. No. 3. Yes. 4. Yes. 5. 8ビット環境 6. No. 7. ASCIIを使用 8. JISX0208-1983を使用 *korean-mail* -- 韓国のネットワークで使用される符号系 1. G0 <- ASCII, G1 <- KSC5601, G2,3 <- 使用せず 2. No. 3. Yes. 4. Yes. 5. 7ビット環境 6. Yes. 7. No. 8. No. Muleはこの全ての符号系をデフォルトで作成している。