ひろば Q & A 第9回

質問

Q: Web site の文字化けに関して

ヤフーって何時いっても文字化けするんですが会員制なのでしょうか?

質問者: チョコさん

回答

A: Internet Explorer 5.0 では何故かヤフーが文字化けしていたようです。表示→エンコード→日本語で正常に表示されます

さて、今回のお題は文字化けです。文字化け、と言うのは、要するに文字が読めないような状態に成ってしまっている事で、例えば、今回の質問文が文字化けすると以下のように表示されるなどしてなかなか愉快なであり、カタカナだけ読めたりする分かえって悲しさが演出されたりします。

Q: Web site v搭建猿・・它・・/p+>ヤフーq 仲・桙÷・逐燗旧嚔・・・・・・・・・・・楳摩・・・・・H (貰嫌Fチョコi・j

さて、どうしてこんな事が起こるのでしょうか?

  1. 文字化けではない
  2. プログラムや通信環境の欠陥 (bug やノイズ)
  3. フォントが無い
  4. 文字コードセットが間違っている
  5. 上記の複合

では、順に説明していきましょう。

1 番の文字化けではない。これは上記のQ: Web site v搭建猿・・它・・/p+>がまさにそうで、文字が化けていますが、元々そういう風に書かれているので、化けていて正解な訳です。時々こう言う演出をした web site があったりしますので WWW は侮れません (そうか?)。

2 番のプログラムや通信環境の欠陥。これは致し方なし、と言う所で、Web Site がたまたま bugっちゃった場合は更新してやれば大抵 OK ですが、それで駄目なら環境を変えてリトライ、といった感じです。まぁ、あれですな、携帯電話で電話していてノイズが酷い時にあ、聞こえなかったもう一回言ってって言うのが更新、公衆電話でかけ直すってのが環境を変える、って奴です。Browser を変えてみたり、パッチを当てて (bug を修正する) みたり、メーラや Browser を変えてみたり、そういう事で誤魔化したり、諦めたり、解決出来たりします。また、昨日は駄目だったけど今日は何故か OK と言う事もありますからコンピュータは不思議です (って言うか、如何にかして欲しい)。

3 番のフォントがない。別に新しい邦画の題名とかじゃなくて、そのまんまの状況です。コンピュータが文字を画面に表示する時はフォントと言う物を使っており (MS ゴシック とか Times New Roman とかそういう奴です)、これが文字の形をコンピュータに教えて表示させております。が、逆に言えばこれが無いと表示出来ない訳です。例えば多くのアメリカ国内向けパソコンには日本語のフォントが入っていませんから当然日本語は表示出来ず、仕方なく漢字のデータが入っていないフォントで無理矢理表示するので文字化けが起こります。また、日本のパソコンもヘブライ語とかは通常搭載していないのでやっぱり文字化けが起こります。そこで、じゃあアメリカのパソコンだろうと、日本のパソコンだろうと、世界中のフォントを予め搭載しとけばいいじゃないか、という人もいるかも知れませんが、そうは行かない幾つかの事情が有ります。

まず、フォントと言うのは結構な容量ですので、片っ端から搭載するとハートディスクを無駄に使うことになります。次に、選択肢が増える、と言うことはその分迷う可能性が出てくる、ということであり、コンピュータが文字を選ぶのに時間がかかって遅くなったり、思わぬ Bug の原因に成ったり、操作する時無闇に大量のリストが表示されてわずらわしかったりします。更に、フォントはタダではありませんので沢山開発して、片っ端から搭載するとその分コストがかかったりします。ってな訳で、自分の用途を見極めて必要なフォントを搭載するようにしましょう (今の環境に不満が無ければわざわざ搭載されているフォントを消す必要はありませんし、無闇にフォントを消すと思わぬエラーの原因になります)。

そして今回の本題の 4 番。文字コードセットが違う

コンピュータはフォントを使って文字を表示する、と書きましたが、実はコンピュータ、日本語を読めません。と表示されているのはあくまで画面上のフォントであり、コンピュータの内部ではを意味する数字の羅列でしかないのです。さて、その数字ですが、例えばなら0x82a0なら0x82a2なら0x88eaと言う感じです。しかし、この番号、実は何種類かあるのです。

なーんでコードが何種類もあるか、統一されていないか、という事情を話すと非常に話が長くなるので省略しますが、兎に角一般的に日本工業規格の定めたJIS コード (JIS X0208、E-Mail の規格 MIME の標準)、JIS コードを元に米マイクロソフト、アスキー、日本 IBM、三菱電気が定めたShift JIS (別名: MS JIS、DOS/V や Windows9x が採用)、ユニックスで用いられるEUC (Extended Unix Code)、そして日本の漢字にとどまらず世界中の言語を一意に指定するUnicode (WindowsNT が採用)などがあり、例えばシフト JIS の0x82a0でも、他のコードの0x82a0では無い為に結果として文字化けが発生する訳です。

で、これをどうやって解決するかと言うと表示するソフトを対応したコードに合わせるか、表示出来る文字コードに変換すると言うのが解決法になります。そして Browser の場合は文字コードエンコードと言った項目を (項目名は各 Browser、バージョンによる) 正しい値にするか自動判別にすることによって解決します (正しい値が分からない場合は片っ端から試してみましょう。概ね OK です)。

ってな訳で回答の表示→エンコード→日本語 (自動判別)となる訳です。

さて、最後の 5 番、上記の複合ですが、実は今回のヤフーの文字化け問題がそれで、通常指定しなくても自動判別される筈の文字コードが Internet Explorer 5.0 では何故か上手く行かず (1. プログラムや通信環境の欠陥)、誤った文字コードで表示されていた訳です (4. 文字コードセットが間違っている)。

何やら当所の予定の倍以上の文章になってしまい、混乱気味のろばQでありますが、本日はこんな所で。ではでは。

参考文献

日経 BP 社 『日経 BP デジタル大事典 1999-2000年版』