戻る シフト 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 コード表でのそれぞれの位置を表しています。




漢字コード表をクリックすると、 その点の文字コードや、 割り当てられている文字が表示されます。
位置は 十 字型のボタンによって移動でき、 中央のRun/Stop ボタン をクリックすると、 コードが自動的に変わります。
「文字コード」 欄に 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 漢字コード」 と正しく読ませたかったら、 "4A 49 53 1B 24 42 34 41 3B 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 漢字コード表


情報処理概論 に戻る   目次 に戻る  戻る  

Java applet 圧縮アーカイブファイル    自由利用マーク
update: 2012.10.03  address