■ページの文字が化けてしまう、表示が変になるのはなぜ? ページを作成した後にブラウザで確認すると文字が正しく表示されないことがあります。正しく表示されないのばアルファベットや数字以外、日本の場合では日本語が化けてしまうことがあります。このような現象は「文字化け」と言われ古くから存在します。 古くからある、というのもコンピューターは元々1バイトで文字を表現していました。1バイトというのは8ビット=256文字になり、英文字や数字は256文字分あれば十分足ります。しかし、日本語や中国語では256文字では足りません。漢字や平仮名、カタカナなど非常に多くの文字が存在するためです。古くはカタカナを256文字のコードセットの後半に割当てたりして利用していました。これが半角カタカナと言われるものです。 1バイトでは足りないなら2バイト=65536文字にすれば良さそうです。という事で漢字や平仮名は2バイトで表現するようになりました。しかし、どのように2バイトで表現するかという手法が統一されずに、複数できてしまったという経緯があります。Webページ作成ソフトでSHIFT JIS、JIS、EUCなどいくつかの文字の表現方法を指定する項目があるのは、そのためです。日本工業規格としてはJISコードがあります。このJISコードに従って作成すれば問題がなさそうですが、20年近く前(1970年代〜80年代)のコンピューターは8ビット、よくても16ビットで処理能力に乏しくメモリも少ない上にハードディスクもないというのが当たり前でした。そんな状況なのとJISでは既存の1バイトの文字コードと干渉してしまうため使いにくい面がありました。そこで1バイトの文字(英数字)と干渉しないようにコードをずらしたのがSHIFT JIS(ずらした=シフトしたJIS)です。割と簡単に処理できる上にJISコードに戻す場合でも労力が少ない、マイクロソフトのMS-DOS上などで使われたため一般的に広く普及しました。現在でもSHIFT JISは非常に多く利用されています。 SHIFT JISよりも、もっと手軽なのがEUCです。1バイトの文字コードが干渉しない128文字以降を利用するのはSHIFT JISと同じですが、単純にJISコードの最上位ビットを1にする=128を加えるだけのものです。(実際には、もう少し複雑な状況もあります) EUCは、その略称Extened Unix Codeの頭文字で、UNIXなどのOSで利用されています。UNIXはWebサーバーなどに使われることが多いため、PerlなどのCGIでEUCを使えというのは、このような経緯があるためです。 JISコードも、実際には人名用漢字などに利用する場合には不足している漢字が多く、森鴎外(もりおうがい、の鴎)など著名な作家などの名前も表現できませんでした(古いJISコードでは私の名字も表現できませんでした。現在のJISコードセットでは、やっと表現できるようになりました)。そこでJISコードは何度か改訂されて現在に至っています。 しかし、SHIFT JIS、JISは日本語だけならば十分ですが、世界中の言語を記述する数だけの割当がありません。また、中国語やハングル文字、アラビア文字(文字が位置によって形が変化する)など、いろいろなコード体系が出てきました。そこで全ての言語を統一された文字コードで表現しようということで考案されたのがUnicode(ユニコード)です。Unicodeなら全ての文字が納められるはずでした。が、実際には中国語の文字と日本語の文字で似たようなものは同じ文字と見なされてしまったため、何ともよろしくない状況になり(米国人には漢字の微妙な違いは分からなかった)、さらにUnicodeの中でUTF-8とか、いろいろな体系が出てきて全然統一されていないというのが実情です。 Unicodeの中で多く使われているのがUTF-8というものです。Webページ制作ソフトの中でもUTF-8が指定できるはずです。MacOS X、WIndows XP以降では1つのページ内に異なる言語の文字を表示させることができます。従来のOSでは難しかったことができるのもUnicodeの良い点です。 しかし、それ以前のOSの場合には正しく文字が解釈されないため文字化けしてしまうことがあります。そのような場合には安全なSHIFT JISやEUCを指定することになります。 文字化けする要因で多いのは<meta>タグで文字コードを指定していないためにブラウザが勝手に解釈して表示されてしまうためです。文字化けを防ぐには、まず<meta>タグで文字コードを指定しましょう。 しかし、中には<meta>タグで指定していないのに関わらず文字化けしないページもあります。これは先頭の数文字をブラウザが解釈し文字コードを判別しているためです。逆にどの文字コードか判別できない場合には文字化けしてしまう事になります。Yahoo ! JAPANなどでは文字コードを認識させるために <!--京--> のように先頭に文字コードが特定できる文字をコメント内に記述しています。Gooでは <!--龠龠龠--> のようになっています。1文字だけで判別しない(できない)場合もあるため数文字書いてあります。どちらもEUCとして認識されます。 なお、Windows XP SP2 (2004/9/30現在のもの)を適用している場合、ページの文字コードがUTF-8以外では文字化けしてしまう場合があるようです。マイクロソフトのページに記述があります。 *記憶に基づいて書いてあるので、若干ミス、歴史的経緯のミスがあるかもしれません。文字コードは他にもいろいろありますが、おおまかな流れは合っているはずです。これは間違っている、という点があれば[email protected]までメールをいただければ助かります。 2004 Copyright 古籏一浩/[email protected] |