インターネットにおける漢字コード


 このテキストは,『Internet では,今どんな日本語コードが支配的なんで しょう?』という私の素朴な(かつ少し的外れな)疑問に対して,オムロン 倉吉(株)の藤原啓一氏が私信で教えてくれた内容を,氏の御好意により公 開させて頂いたものです。従って,このテキストの著作権は藤原啓一氏と私 にあります。無断コピー・ダウンロード等はかたくお断りいたします。

インターネットにおける漢字コード

 基本的に、インターネットの網を通過するコードは、JIS コードでなければ なりません。 Shift JIS あるいは、EUC は本来アウトです。というのも、 Shift JIS も EUC も 8 ビット目を使っているからです。

 JIS の漢字コードは、1文字=16 ビットということになっていますが、実際 には 14 ビットしか使っておらず残り 2 ビットは空いています。これは、 1 バイト= 8 ビットずつのデータをやりとりする場合、実際には 7 ビット単 位しか必要としないという意味です。

 これに対して、Shift JIS も EUC も 8 ビットをフルに使っています。
 例えば、全角スペースで比べるとこうなります。
コード16進ビットトップのビット
JIS$212100100001 00100001使用していない
Shift JIS$814010000001 01000000トップも使用している
 ところが Ascii 文字 を中心とした欧米のネットワークは、 7 ビットしか 通さないものが多く、此処を通過すると、文字化けする可能性が多々あります。

 そういったわけで、メールも、本文は、メールソフトか、メールサーバーか で、一度 JIS コードに直すことになっています。これは、むしろ、話が逆で、 日本にインターネットが導入されたときに、 7 ビット、それも、バイト単位で しか受け付けない欧米のネットワークに対応して、漢字コードを通すために、 バイト単位処理で、しかも 7 ビットシステムで通過するコードにしたというこ とだそうです。
 故に、メールの本文が文字化けすることはほとんど無いはずです。半角のカ タカナが化けるのは、 JIS への変換で失敗するからです。


メールヘッダにおける漢字コード

 メールのヘッダは、もう少し大変で、「非 Ascii 文字を使ってはならない」 という決まりになっています。本来、メールヘッダには、漢字コードを書くこと はできません。上述のように、Shift JIS, EUC は 8 ビット目を使っているので 論外。JIS は、漢字コードの開始宣言として、コントロールコード(これが、非 Ascii)を使う必要があるので、これもアウト。
 しかし、日本では、JIS コードは、ちゃんと漢字にしてくれる処理系が多いで すね(してくれない処理系もあります)。


内部コードとインターネット

 上の話はあくまでも、「網を流れる」コードのことで、各マシンのコードとは 本来直接的な関係はありません。いわゆる JIS コードは、「情報交換用文字符 号」という規格名称であり、交換を目的とした場合に使用するものです。した がって、個別のマシンの内部コードとして、JIS コードを使う必然性はありませ ん。パソコン通信の場合は、内部コードとして使用している Shift JIS が、情 報交換用として大きな顔をしているので、まっとうな通信屋さんには非常に評判 は悪いです。
 これを考えると、(たとえ、WS は EUC で動いていたとしても)ホームページ は JIS コードで書くのが筋というものです。

 さらに、最近は、Mime がかなり標準的になってきました。
 これは、Ascii 文字だけを使って、任意の文字を表現するためのもので、 メールヘッダに、

mime-version: 1.0
content-type: text/plain; charset=iso-2022-jp
なんてのがあるのは、これの対応ですね。Mime によって、全てのコードを Ascii 文字として表現し、同じくもとに戻します。もとに戻したコードを JIS コードとみなして(charset=iso-2022-jp)さらに、内部の漢字コードに変換し ます。
 text/plain の他にも、ありとあらゆるデータタイプが定義されていて、本文 にも自由に漢字コード、バイナリデータ(ワープロのデータや、画像データ) を埋め込むことが出来るので、そろそろ、これが主流になりそうですね。


参考文献

  1. 文字 code に関する RFC
  2. MIME っていったい何?


小矢野のホームページへ
このページの御感想・御意見は koyano@jaist.ac.jp まで。