JIS X 0208 とシフトJISの関係
シフトJISコード は、JIS X 0201 8単位表の隙間に、JIS X 0208 を押し込んだ形になっている。
具体的には、英数字の未定義領域(0x81~0x9F)と、カタカナの未定義領域(0xE0~0xEF)を第1バイトに、0x40~0x7E・0x80~0xFCを第2バイトとする2バイトのコードを用意した。
JIS X 0208 の区点コードから シフトJISコード を求める変換式は下記の通りである。
第1バイト
1≦k≦62のとき、S1=(k-1)÷2+0x81
63≦k≦94のとき、S1=(k-1)÷2+0xC1
第2バイト
kが奇数、かつ
1≦t≦62のとき、S2=t+0x3F
63≦t≦94のとき、S2=t+0x40
kが偶数のとき、S2=t+0x9E
具体的には、英数字の未定義領域(0x81~0x9F)と、カタカナの未定義領域(0xE0~0xEF)を第1バイトに、0x40~0x7E・0x80~0xFCを第2バイトとする2バイトのコードを用意した。
JIS X 0208 の区点コードから シフトJISコード を求める変換式は下記の通りである。
第1バイト
1≦k≦62のとき、S1=(k-1)÷2+0x81
63≦k≦94のとき、S1=(k-1)÷2+0xC1
第2バイト
kが奇数、かつ
1≦t≦62のとき、S2=t+0x3F
63≦t≦94のとき、S2=t+0x40
kが偶数のとき、S2=t+0x9E
ASCIIコードとの共存
シフトJISコード の第1バイトは、下表の薄いピンク色の領域だ。JIS X 0201 8単位表の未定義領域に割り当てられている。
第2バイトは、下表の薄いピンク色の領域だ。JIS X 0201 8単位表と重なるものが多い。プログラムで誤って第1バイトと第2バイトを分離してしまうと、第2バイトが ASCIIコード とみなされ、意図している漢字ではない英数字カナがあらわれたり、文字化けを起こす。
たとえばプログラミングで文字列の一部を取り出す substr 命令などは、プログラミング言語の使用によっては2バイト・コードを分割してしまうことがあるので注意が必要だ。PHPの substr がまさにそうで、シフトJISを含む文字列を分解する場合には、 mb_substr を用いなければならない。
とくに2バイト目に0x5Cを含む文字はエスケープシーケンスとみなされ、文字化けを起こす可能性が高いことは、「JIS X 0201――バックスラッシュと円マーク」で述べたとおりだ。
エスケープ文字が含まれているかどうかを調べるツールを再掲する。
とくに2バイト目に0x5Cを含む文字はエスケープシーケンスとみなされ、文字化けを起こす可能性が高いことは、「JIS X 0201――バックスラッシュと円マーク」で述べたとおりだ。
エスケープ文字が含まれているかどうかを調べるツールを再掲する。
シフトJIS の興隆
シフトJIS はJIS規格ではなく、業界主導で制定された。パソコンに漢字ROMが搭載されるようになった1980年代、アスキー、マイクロソフト、三菱電機などが制定に関わったとされている。
業界主導であったことから、パソコンにおける文字列の格納形式は シフトJIS は主流になってゆく。ワープロでは独自のデータ形式で格納するものが多かったが、シフトJIS へのデータ変換機能を備えるようになる。
業界主導であったことから、パソコンにおける文字列の格納形式は シフトJIS は主流になってゆく。ワープロでは独自のデータ形式で格納するものが多かったが、シフトJIS へのデータ変換機能を備えるようになる。
1983年(昭和58年)に登場した日本語 MS-DOS 2.0 は シフトJIS を標準とした。この流れは、DOS/V(1990年) や Windows 3.1(1992年)にも受け継がれていく。
Windows NT 4.0(1996年)と続くWindows 98(1998年)になり、Unicode が利用できるようになる。これについては後述する。
シフトJIS がデファクトスタンダードになったことを受けて、JIS X 0208:1997(別名 97JIS)の附属書1に「シフト符号化表現」を掲載し、これを認めた。
Windows NT 4.0(1996年)と続くWindows 98(1998年)になり、Unicode が利用できるようになる。これについては後述する。
シフトJIS がデファクトスタンダードになったことを受けて、JIS X 0208:1997(別名 97JIS)の附属書1に「シフト符号化表現」を掲載し、これを認めた。
参考サイト
- シフトJISコード :通信用語等の基礎知識
- JIS X 0208:日本工業標準調査会
- JIS X 0208 と全角文字
- ChromebookでシフトJISテキストファイルを保存するChrome拡張を作る:こばこのひみつ
- 文字コード、文字集合、エンコードについて:ほんっとにはじめてのHTML5とCSS3
(この項おわり)
そこで登場したのが、シフトJISコード である。