文字コード超研究 15章〜16章
- 作者: 深沢千尋
- 出版社/メーカー: ラトルズ
- 発売日: 2011/07/19
- メディア: 単行本(ソフトカバー)
- 購入: 2人 クリック: 8回
- この商品を含むブログ (4件) を見る
前回の続き
15章 ISO-2022-JP
日本語用のエンコーディングスキームの一つ。ISOの名前がついているが、ISOが制定した規格ではない。また、JISが制定したものでもない。JIS X 0201とJIS X 0208を実装する情報交換用の文字コードとして考案され、RFC 1468として登録されたものである。
- 7ビット系のISO 2022において、G0の1面だけを使用する
- GLにG0を常に呼び出す(呼び出し制御文字は不要)
- エスケープシーケンスによるG0への指示により、文字集合の切替を行うステートフルエンコーディング。
- 0x20は常に空白文字
- 改行文字までにASCIIに戻す
なお、RFC1554にはISO-2022-JP-2, RFC 2237には ISO-2022-JP-1が規定され、JIS X 0213:2000の附属書2には ISO-2022-JP-3が掲載されている。これらは、ISO-2022-JPの枠組みはそのままで、使用できる文字集合とエスケープシーケンスを増やしたものとなる。
ISO-2022-JP (RFC 1468)
使用可能な文字集合は以下( 後ろは切替に使用するエスケープシーケンス)
- ASCII - ESC ( B
- JIS X 0201左面(JISローマ字) - ESC ( J
- JIS X 0208-1978 - ESC $ @
- JIS X 0208-1983 - ESC $ B
JIS X 0201右面や、JIS X 0208-1990、JIS X 0208-1997は含まれていないため、半角カナ等、これらで定義されている文字の使用は認められていない。
行頭は必ずASCIIで始まる(行末までにASCIIに戻しておく)というルールがあるおかげで、なんらかの通信障害によりエスケープシーケンスが失われても、行頭はASCIIとして処理を開始できるというメリットがある。
ISO-2022-JP-2
ISO-2022-JPに追加して、以下の文字集合を使用可能にしたもの
- GB2312-80(中国) - ESC $ A
- JIS X 0212-1990(補助漢字) - ESC $ ( D
- KS X 1001:1992(韓国) - ESC $ ( C
- ISO 8859-1:1998右半面(ラテン文字1) - ESC . A
- ISO 8859-7:1998右半面(ラテン/ギリシア文字) - ESC . F
8859のラテン文字を使う時に、G2へシングルシフトで一文字ずつコード表へロードして使う。
ISO-2022-JP-1
ISO-2022-JPに追加して、以下の文字集合を使用可能にしたもの
- JIS X 0212-1990(補助漢字) - ESC $ ( D
ISO-2022-JP-2のサブセットとも言える。
ISO-2022-JP-3
JIS X 0213を使えるようにするための国定のISO-2022-JP
- ASCII - ESC ( B
- JIS X 0213の1面 - ESC $ ( O
- JIS X 0213の2面 - ESC $ ( P
- JIS X 0208-1983 - ESC $ B
JIS X 0213の1面で既に JIS X 0208が使えるのに、なぜJIS X 0208単独のエスケープシーケンスも用意されているのか不思議だが、単に互換性のためらしい。
ISO-2022-JPと半角カナ
RFC的には違反だが、色々な手法でメーラーが対応している。
ESC ( I 方式
JIS X 0201右半面を呼び出す ESC ( I をそのまま使う方法。割とオーソドックスな手法。
SO SI方式
JIS X 0201の右半面をG1にロードしたと仮定して、SO(0x0e)で半角カナ開始、SI(0x0f)で終了とするもの。ほとんど使われない。
8ビット方式
ESC ( J (JIS X 0201の左半面)のエスケープシーケンスに続いて、8bitコードで半角カナを使う環境もあるらしい。7bitしか通さない環境なんてほとんどないので、たしかにこれでも大丈夫なのかもしれない。
16章 EUC-JP
AT&Tが各地で現地版のUNIX用文字コードとして策定したうちの一つ。韓国版のEUC-KR、中国語版のEUC-CN、台湾版のEUC-TW等がある。
EUC-JPは、JIS X 0201 / JIS X 0208 / JIS X 0212と親和性の高いエンコーディングスキーム。
文字種
8ビット系のISO 2022の応用で、G0,G1,G2,G3の文字集合をGLとGRに呼び出して使う。 EUC-JPで規定されているのは以下の文字種。
- G0 - ASCII
- G1 - JIS X 0208:1997 (JIS 第1/第2水準漢字)
- G2 - JIS X 0201右半面 (半角カナ)
- G3 - JIS X 0212-1990 (JIS補助漢字)
エスケープシーケンスが不要な代わりに、複数の国のEUCは混在できず、しかもどの国のEUCかを判別させる方法を持たない欠点がある。
呼び出し方
- ASCII - 0x21~0x7e (1byte)
- JIS X 0201カナ(半角カナ) - 0x8e + 0xa1~0xfe (2byte)
- JIS第1水準 - 0xa1~0xa8 + 0xa1~0xfe (2byte)
- JIS第2水準 - 0xb0~0xf4 + 0xa1~0xfe (2byte)
- JIS補助漢字 - 0x8f + 0xa1~0xfe + 0xa1~0xfe (3byte)
EUC-JIS-2004
EUCの枠組みを使って JIS X 0213を表示するためのもの
- G0 - ASCII
- G1 - JIS X 0213:2004第1面 (JIS 第1/第2/第3水準漢字)
- G2 - JIS X 0201右半面 (半角カナ)
- G3 - JIS X 0213:2004第2面 (JIS第4水準漢字)
というわけで、日本でよく使われているエンコーディングスキームの3つのうちの2つが終了。実はEUC-JPって非常に扱い易いスキームだったんですよね…unixでさえなければもっと普及したろうに…
次回へ続く