Shift_JIS

インターネット全盛のこの時代、国際的に通じる文字コードは国際的に定められた規格に準拠していることが必要ですが、このShift_JISは言わずと知れたパソコン界でのデファクトスタンダードと言える文字コード系ですがでISO 2022に準拠しません。インターネット以前、閉じた世界でお互いの了解のもとより効率のいい方法で文字をやりとりするために定められた規格と言えます。実際、エスケープシーケンスを使用しないで、ひらがな・カタカナ・漢字・ローマ字が混在できるため効率よく便利な文字コードとなっています。

Shift_JISの構成

JIS X 0201 8ビット構成を基本としてISO 2022で未使用だった0x80〜0x9fエリアにJIS X 0208の1〜62区を、0xe0〜0xffのエリアにJIS X 0208の63区〜94区を「シフト」して詰め込んだものです。

Shift_JISコード表 第1バイト

第2バイトは下の表のようになっています。

Shift_JISコード表 第2バイト

先に、Shift_JISはモードレスであると書きましたが、上の表のように0x81〜0x9f、0xe0〜0xfcの部分は第1バイトと第2バイトで重なりますから、あるバイトだけを取り出してそのバイトが第1バイトなのか第2バイトなのかを見分けることはできません。

さらに、第2バイトの漢字が一部ASCIIコードと重なっています。この部分ではいろいろと不都合が起こるのですが特に0x5c問題はプログラマである私も何度か引っかかったことがあります。プログラミング言語の多くは(C/C++、perlなど)では"¥"(\:バックスラッシュ)がプログラミング上重要な意味を持つ場合が多くありますがこのバックスラッシュが漢字コードの一部に紛れ込んでいるためプログラムが誤動作を起こしてしまうわけです。