日本語、半角、Shift-JIS
インターネットで受け取ったメールが文字化けしていて、「半角カナを使っているから」といわれたことはありませんか? あるいは送信コードを「Shift JISではなくJISにしてください」と注意された経験は?
制約の多い日本語のメール
半角カナを使わない、文字コードはJISにして送る。これらはインターネットで日本語のメールを送るときの重要なルールです。何だか不思議な決まりですが、これはインターネットがアメリカで生まれ育ったため、何万という文字を持つ日本語の利用が考慮されていなかったことに起因するのです。
英語のアルファベットは大小文字合計でわずか48。それに0〜9の数字といくつかの記号を加えたところで、100とおりにもなりません。そこで文字、数字、記号あわせて94のキャラクタを、7ビット(2の7乗=128)で表現する方法が定められました。これがいろいろなところでお目にかかるASCIIと呼ばれるコードです。
一方、計算機でデータを扱う単位は8ビットを一まとまり(1バイト)とすることが普通ですから、ASCIIコードを扱うときに8ビット目が宙ぶらりんになってしまいました。余ったこのビットの処理はメールソフト任せ。ここに何があっても気にしないソフトもあれば、8ビット目をすべて0にリセットしてしまうものや、特殊な振る舞いをするものまであります。インターネットではメールはバケツリレーのように運ばれるので、途中でこうしたソフトに出くわすと、いろいろなトラブルの種が生じるのです。
2バイトで表現する日本語
漢字を計算機上で扱うには、もちろん1バイトでは足りませんから、2バイトで1文字を表現しています。
しかし、8ビット目を使わないという慣習(国際規格ともいう)があるため、1983年のJISによるコンピュータ用の漢字規格では、1文字を構成する2つのバイトをそれぞれ7ビットで表現できるように定めました。94×94の方眼に仮名や漢字を配置し、縦軸の値を1バイト目、横軸の値を2バイト目として文字を表すことにしたのです(各バイトは94とおりなので7ビットで表現できます)。これがいわゆるJISコードで、エスケープシーケンスという特別なコードの組み合わせを目印に、7ビットのデータがASCIIを表すのか漢字なのかを切り替えながら使います。このJIS方式ならば8ビット目を使わずにメッセージ交換が可能です。
ところがややこしいことに、日本語の文字コードはJISに一本化されているわけではありません。パソコンで使われているのは「シフトJIS」です。これは、以前からある1バイトの仮名(いわゆる半角カナ)をそのまま利用するために、JISの文字配列を大きく移動(シフト)させ、第8ビットも使ってコードを割り当てています。ということは、これを現在のインターネット・メールで使うことはできませんね。そこでパソコン用メールソフトは、送信時にシフトJISをJISに変換するという作業も行っているのです。
コンピュータにおける日本語(漢字)の扱いについては当サイトの日本語と文字コードのページを参照
文字化けの原因
さしあたってパソコンのメールで問題になるケースは2とおりあげられます。一つは、シフトJISのコードをそのまま送信してしまう場合。メールソフトは送信時にコードをJISに変換するよう設定されているはずですが、何かの拍子にこれを変更してしまったのかも知れません。ひどいソフトになると、シフトJISでの送信を奨めていることすらあります。
もう一つは、半角カナを含むメッセージです。実をいうと、半角カナは前述の(1983年の)JIS漢字規格には含まれていません。そのため、メールソフトがシフトJISの文章を変換しようとしても、この部分は手をつけることができず、8ビットを使ったままの危険なコードとして送り出されることがあるのです。[注]
こういうメールはいわば過積載トラックのようなもので、運良くみつからずに目的地まで届けばそのまま読める場合もありますが、検問(8ビット目をチェックする中継点)に引っかると、判読不能のメッセージに変身してしまいます。8ビット目が違法であることの方が不条理だとはいえ、これが原因で文字化けが生じているのも事実。自己防衛のためにもこうした事情を理解し、トラブルのないメッセージのやりとりを心掛けましょう。
(NetFan, April 1997)
関連するRFC
注
半角カナをインターネットで送る方法は定められていないが、JIS規格では、漢字とは別に半角カナ(1バイトカナ)は定義されており、それを利用して7ビットを使わずに半角カナを送り出すメールソフトもある。「インターネットでの日本語メール」の半角カナとJISを参照