午前4時40分 Google の文字化け
今一番気に入っている検索サイトは Google です。結果が出るのが早く、データ量も半端ではありません。サイトの変更がデータベースに反映されるまでに1日と言うのもいいです。
サイトのファイルをキャッシュとして蓄えているのも非常にありがたいです。重いサーバにあるページの場合、表示されるまで非常に時間がかかってしまいます。しかし、キャッシュを使うことでその時間を短縮することが可能になります。しかもキーワードがハイライト表示され、ブラウザの検索機能を使わなくてもざっと見るだけでも目的の情報にたどり着きやすくなります。これが一番便利な機能ではないかと思います。
さて、この便利なキャッシュ機能ですが、文字化けしやすいという欠点があります。文字化けのパターンには2種類あり、1つは冒頭に自動挿入される部分の文字コードが本来の文字コードと一致しないために発生する場合。もう1つは、ハイライトの周辺で発生する場合。どちらも珍しい現象ではないので、Google でキャッシュ機能を使った人なら1度は目にしたことがあるでしょう。
まず、1つ目の場合は、ブラウザで文字コードを指定してやることでそれなりに対応できます。この日記を読んでいる人のほとんどは日本人でしょうから、文字化けしたページの本来の文字コードは、Shift_JIS・EUC-JP・ISO-2022-JP(JIS)の3つであることがほとんどでしょう。最近では、Unicode・UTF-16・UTF-8 などのユニコードも使われるようになってきていますが、今のところそんなには遭遇しないようなので割愛させていただきます。
文字化けしたときにどの文字コードを指定すればいいのか判断する方法があります。Shift_JIS は日本語版 Google の標準文字コードですので必ず一致して文字化けは起こりません。ISO-2022-JP の場合、大量の $ が表示されます。おそらく、ASCIIコード と JISコードの切り替えのためのエスケープシーケンスが表示されてしまったものだと思われます。実際には、次のような感じになります。
BBt;3$"$kJ8;z$NA4$F$r5!3#$G07$&$N$OFq$7$$$3$H$G$9!#$=$3$G!"$h$/;H$&J8;z$@$1$r=8$a$k;v$,9M$($i$l$^$7$?!#=8$a$?J8;z$N;v$r
EUC-JP の場合は、次のサンプルのように半角カタカナが多く表示されます。
ホウォネッ、ネ、マトセタワエリ、・テ、ニ、、、ハ、、、ソ、癸「、ウ、ホ・レ。シ・ク、ホセハ、マコヌソキ、ホ・筵ホ、ヌ、ハ、、イトヌスタュ、ャ、「、熙゙、ケ。」、「、鬢ォ、ク、皃エホサセオイシ、オ、、。」
どのパターンにも一致しない文字化けが起こった場合は、おそらくブラウザの判断ミスか変換ミスと思われます。経験上、日本語自動判定にすると正常に表示されますので、Shift_JIS であると考えられます。
これで1つ目の場合は何とかなるわけですが、もう1つの文字化けは対策のしようがありません。キャッシュデータの文字を1バイト単位で扱っているのではないでしょうか。また、丸付き数字などの明らかに機種依存である文字の直後などは確実に表示がおかしくなっているようです。機種依存文字に関してはかなり情報がありますので、可能な限り使わないようにする努力をお願いします。
サーバがきっちりと Content-type ヘッダでファイルの文字コードを指示したり、META エレメントで文字コードの情報を記述するようにしておけば、その情報もデータベースに蓄えておくことで1つ目の対策は出来るのではないでしょうか。負荷は馬鹿にならないかもしれませんが、ユーザビリティは確実に向上すると思います。企業ですから簡単に実行するわけには行かないでしょうが、愛用者の一人として、ぜひ対応して欲しいものです。