コンピュータがテキスト・データを画面に正しく表示できるのは,その文字のコードが分かっているからである。メールやWebブラウザで文字コードが正しく判別されないと,本来と違う文字が表示されてしまう。文字コードは正しく認識されているのに,違う文字が表示されてしまうこともある。その原因はどこにあるのだろう。また,文字コードには1バイトの文字と2バイトの文字がある。データ自体は単なるビット列なのに,どうやって判別しているのだろうか。
コンピュータを使っていると,必ずと言っていいほど「文字化け」という現象に遭遇する。インターネットでWebを閲覧している際に,呪文のような文字が並ぶ読めないページが表示されたり,同様に送られてきたメールが読めなかったりする経験が1度や2度はあるはずだ。これがいわゆる「文字化け」と呼ばれる現象である(図1)。
文字化けの原因の多くは,送信されてくる文字コードをソフトが正しく判別できていないところにある。ブラウザがページを文字化けして表示しても,ほとんどの場合は文字コードを正しく指定すればきちんと表示される。つまり,文字化けの主な原因は文字コードのとり違えと考えられる。
ところが,実際にはもっとたくさんの原因が存在している。なんとインターネット上のサーバーや,社内のサーバーが勝手に文字コードを変更してしまうこともあるのだ。
日本では複数が混在している文字コード
文字コードは,簡単に言えば文字や記号をコンピュータで扱うために,その文字や記号一つひとつに固有のコードを割り当てたものである。もちろん,コンピュータを扱う人がそれぞれ別個のコードを使っていては,データを他人と共有できない。そこで標準化が必要となるが,これが国によって大きく事情が異なっている。
そもそも,コンピュータは英語を使うアメリカで発達した。英語では扱う文字はアルファベットと記号のみでよく,合わせても7ビット*あれば十分である。これらの文字に割り当てた番号は,ASCII(American Standard Code for Information Interchange)として標準化されている。
しかし,日本などアルファベット以外の文字を使う国ではそう簡単ではない。特に漢字では,文字の種類が数万を軽く超える。最大でも255文字までしか扱えない1バイトではお話にならず,2バイトを使って漢字を表示させる文字コード(漢字コード)が開発された。しかし,歴史的な背景も絡み,日本で文字コードは統一されておらず,同じ漢字に異なるコードが割り当てられている。
現在は有名なものだけでも4種類の文字コードが使用されている(表1)。このうち,Windows環境で広く使われているのはISO-2022-JP(JIS*),シフトJIS,Unicodeの3つである。