2011年5月16日

文字化け対応

私のホームページで文字化けが生じるというご指摘はいただいておりましたが、ブラウザ等の利用環境にも依存する話だし何よりも自分の利用している環境で再現しなかったので今まで特にこれといった対処はしていませんでした。ところが、その文字化けを目撃しました。

ホームページ全体の見直し作業の一環として“このサイトについて”というページのリンクしている部分を黒色に変えたついでに行頭文字を●から■に変えました。すると、和文のページは問題なく■が表示されているのですが、英文のページでは「」になってしまっていることに気づきました。

和文のページ

英文のページ


■と「」の関係は比較的すぐに分かりました。■はEUCという文字コードで表すと a2a3 になります。シフトJISという文字コードだと「 が a2、」が a3 で表されます。つまり、本来ならばEUCで解釈されて欲しい一文字が誤ってシフトJISの二文字として解釈されてしまっているわけです。「文字コードなんて分からん」という人のために比喩を使うと 2 という数字を“に”と読むか“two”と読むかの違いみたいなものだと考え て下さい。

2 → 日本語だと → に
2 → 英語だと → two

a2a3 → EUCだと → ■
a2a3 → シフトJISだと → 「」

また、この問題は Internet Explorer 7 だと生じることも分かりました。Internet Explorer 8 や Firefox 4.0.1 だと上記問題は生じず、英文ページでも正しく■が表示されます。それならば「最新のブラウザを使って見て下さい」で済む話なのかもしれませんが、原因究明を兼ねて正しく表示する方法を模索してみました。

試行錯誤の結果■より前に日本語を入れると問題が生じないことが分かりました。このページはEUCで書かれていることを明示的に表明しているのですが、そのような指定をまったく無視し、最初に登場にする日本語を見てどの文字コードが利用されているかを判断しているようです。この対処方法には欠点があり、見えないように白い字で書いたダミーの日本語はブラウザによっては見えてしまう可能性があります。完璧を期すなら■を文字ではなく画像として埋め込むしかないかも。

0 コメント:

コメントを投稿