|
|
シフトJIS漢字コード |
シフトJIS漢字コードは、パソコンの内部で使用されている文字コードで、
JIS漢字コード (JIS X0208)
を移動 (シフト) させたものです。
シフトJIS漢字コードとは何か、 また、 JIS漢字コード (JIS X0208)
があるにもかかわらず、 パソコンの内部では、 なぜ 「シフトJIS漢字コード」 が使われているのか、
といったことについて考えてみます。
下図の大きい正方形は、第1バイトを縦軸に、第2バイトを横軸にとって、
それぞれ 256×256 =65,536 種類の文字を表わすことができる、文字コード表です。
JIS漢字コードは、 このうち 第1、第2バイトとも 16進数表記で 21〜7E の範囲内の、
下図左上の小さい正方形の中に納められています
(94×94 = 8,836 文字を表すことができます)。
シフトJIS漢字コードは、これを右下の4つの長方形の領域に移したものです。
下図には最初、 「文字コード」 のテキストフィールドや 「JIS 漢字コード」 には "3021"、
「シフト JIS 漢字コード」 には "889F" と表示されています。
そして JIS 漢字コード表の左上の方に青色のマーク、シフト JIS 漢字コード表の上方中央に赤色のマークがあります。
これが JIS 漢字コードの "3021"、シフト JIS 漢字コードの "889F" の位置を表しています。
さらに、右下の 「JIS コード(JIS X 0201)」 の図では、
「0」 が濃い青色、 「!」 が薄い青色で塗りつぶされており、
また中央付近にも濃い赤色と薄い赤色で塗りつぶされたところがあります。
これらは、 "3021" や "889F" を1バイトずつ "30"、"21"、"88"、"9F" と読んだときの、
JIS コード表でのそれぞれの位置を表しています。
漢字コード表をクリックすると、その点の文字コードや、 割り当てられている文字が表示されます。
位置は十字型のボタンによって移動でき、
中央の
をクリックすると、 コードが自動的に変わります。
「文字コード」欄に JIS 漢字コード、又は シフト JIS 漢字コードを入力して Enter キーを押してもいいです。
● JIS 漢字コード
ここで試しに、"3441" というコードを文字コード欄に入力して下さい。
これは漢字の 「漢」 という文字のコードで、シフト JIS 漢字コードは "8ABF" であることが分かります。
同様にして "3B7A" は 「字」 でシフト JIS 漢字コードは "8E9A"、
"2533" は 「コ」 で "8352"、 "213C" は 「−」 で "815B"、 "2549" は 「ド」 で "8368" です。
また、"J I S" の文字コードは上図右下のJISコード表や
キャラクタコード のページなどから、
それぞれ "4A"、"49"、"53" であることが分かります。
「JIS 漢字コード」 という文章をコード化すると、 "4A 49 53 34 41 3B 7A 25 33 21 3C 25 49" となります。

しかし、こうしてコード化された "4A 49 53 34 41 3B 7A 25 33 21 3C 25 49" は、
「JIS 漢字コード」 と読めると同時に、 「JIS4A;z%3!<%I」 とも読めます。
漢字の 「漢」 のコードは "3441" ですが、 "34" は
JISコード (JIS X 0201) や
ASCII では 「4」、
"41" は 「A」 でもあるからです。
"4A 49 53 34 41 3B 7A 25 33 21 3C 25 49" を読め、といわれると、
コンピュータには "JIS 漢字コード" と読めばいいのか、 "JIS4A;z%3!<%I" と読むべきなのか、判断できません。
「そんなの、 "JIS 漢字コード" に決まってるじゃん」 とはヒトだから言えることで、
それでも、 もしこれが暗号に関する文章の一部なら、 "JIS4A;z%3!<%I" と読む方が正しい可能性もあります。
したがって、 "4A 49 53" は 「JIS」 でいいけど、 "34 41 3B 7A 25 33 21 3C 25 49" は 「漢字コード」 だよ、
ということを、その都度明示しなくてはなりません。
そのため、漢字コードに移るときには "1B 24 42"、
ASCII に戻るときには "1B 28 42" という識別用のデータを挿入することになっています。
"4A 49 53 34 41 3B 7A 25 33 21 3C 25 49" を 「JIS 漢字コード」 と正しく読ませたかったら、
"34 41 3B 1B 24 42 7A 25 33 21 3C 25 49 1B 28 42"
とするのです。
でも、これでは面倒です。
● シフト JIS 漢字コード
そこで、この問題をうまく解決するために考えられたのが、シフト JIS 漢字コードです。
「JIS 漢字コード」 という文字データは、 シフト JIS 漢字コードでは先に見たように、
"4A 49 53 8A BF 8E 9A 83 52 81 5B 83 68" となります。

"4A 49 53" までは、 JISコード (JIS X 0201) で問題なく 「JIS」 と読めますが、
次の "8A" は読むことができません。
JISコードでは、 80〜9F、 および E0〜FF には文字が定義されていないからです。
したがって、通常、これらの文字コードは文書データ中に現れることはありません。
シフト JIS 漢字コードはわざと、この、通常現れることのない 80〜9F、 または E0〜FF で始まるように、
JIS 漢字コードを 「シフト」 させているのです。
「漢」 という文字は "34 41" から "8A BF" にシフトされました。
そのため、 "8A" は何と読めばいいのか分からなくなりました。
この、何と読めばいいのか分からないコードが現れたら、コンピュータは、次の "BF" も含めた 2バイト、
"8ABF" は 「漢」 という文字である、と判断すればいいのです。
「ここから漢字だよ」、 「漢字はここでお終いだよ」 という目印がなくても、
読み誤る心配はありません。
関連事項: キャラクターコード JIS 漢字コード JIS 漢字コード表