第4章 いわゆるシフトJISコード(MS漢字コード)
シフトJISは、言うまでもなくISO 2022 非準拠です。
マイクロソフト社など数社が開発したシフト JIS は、JIS X 0201・JIS X 0208という2つの符号化文字集合を対象としたエンコーディング法で、エスケープシーケンスを使用せずに2バイトコード文字を混在させることができます。しかし、これらの文字を構成している2バイトのうち第2バイトのなかに ASCII 文字と重複するものが存在します。また、シフト JIS は、JIS X 0212 で定義されている「補助漢字」をサポートしていません。これは、単純にこれらの文字を収められるだけのコード空間が無いためです。
シフト JIS のエンコードは次のようなものです。
0x81~0x9F または 0xE0~0xEF のバイトによって2バイトコードの始まりとする。そしてこのバイトは、そこから始まる2バイトコードの第1バイトとして処理を行う。続く第2バイトは、0x40~0x7E または 0x80~0xFC の範囲を持つ値となっています。
長所をまとめると、エスケープシーケンスがない、第1バイトを見ただけで文字種がわかることがあげられます。
その反面短所として、拡張性にとぼしい、第2バイトに含まれる0x40~0x7Eのコード(特に、ASCII のバックスラッシュにあたる0x5C)が問題となる場合があること、MSB が落ちたときの復元が困難なことなどがあげられます。
なお、JIS X 0208-1997 ではシフト JIS の規定が取り入れられましたが、この中で、シフト JIS の X 0201 カタカナは将来廃止して、そのコード空間を漢字の拡張にあてる旨の方向性が示されています。
e.g. 文字列「かな漢字a」をシフトJISで符号化すると次のようになります。
文字列 | かな漢字a |
エスケープシーケンス | 存在しない |
コード値 | 82A9 82C8 8ABF 8E9A 61 |
ASCII文字 | ........a |
※ASCII文字で表示できないコードは"."とした