記事インデックス

第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で符号化すると次のようになります。

表4-1 「かな漢字a」のシフトJIS符号化の例
文字列 かな漢字a
エスケープシーケンス 存在しない
コード値 82A9 82C8 8ABF 8E9A 61
ASCII文字 ........a

※ASCII文字で表示できないコードは"."とした