グローバル企業の憂鬱

〜Webの文字コードとブラウザの文字化け

Vol. 401 2010/08/19

森谷 真一

企業のグローバル化が進んでいる昨今、Webサイトのグローバル対応のため(?)、文字コードを UTF-8 にしているサイトが増えていますが、ブラウザによっては文字化けしてしまうケースに稀に遭遇します。(UTF-8 に限りませんが)

世界に向けて情報発信したいのに、文字化けしてしまっては意味がありません。
特に、一番多く使われている Internet Explorer(以下 IE)での文字化けは致命的です。

そこで、今回はブラウザと文字化けについてまとめてみました。

●なぜグローバル対応の文字コードが UTF-8 なのか

日本の文字コードには、Shift-JIS、JIS、EUC の3種類がありますが、日本語専用なので、他国の言語(朝鮮語、中国語、アラビア語など)を表示させようとすると、文字化け(ひらがなや漢字など、いわゆる全角文字が意味不明な記号に置き換わって表示されてしまう現象)が発生してしまいます。

この、文字化けを発生させないように、国際的に文字コードを統一すべく、Microsoft 社、IBM 社、Apple 社などの主要な会社が設立した非営利の Unicode Consortium により提唱される文字コードの規格である Unicode ができました。
1993 年には、ISO 10646 として位置付けられ、Unicode の中でも UTF-8 が主に用いられるようになってきました。

グローバル対応のWebサイトを作成するにあたって、文字コードは一つにした方が運用管理が煩雑にならないため、国際的に統一された文字コードである UTF-8 が採用されることになります。(既に半数が UTF-8 という情報もありました)

・Webで利用される文字コード、UTF-8がもうすぐ50%を突破  - スラッシュドット・ジャパン
 http://slashdot.jp/it/article.pl?sid=10/01/31/0241200

●UTF-8 が文字化けするのは、どのようなケースが多いのでしょうか?

UTF-8 で作成された Webサイトが文字化けするケースの多くは IE(特に IE6 以前)で発生するようです。

これは、Windows OS 日本語版に採用されている文字コードが、Windows2000までは、Shift-JIS だったことに起因します。

IE は、OS である Windows の一部として開発されているため、UTF-8 への対応が他のブラウザよりも遅れているようです。

ブラウザには文字コードの自動選択機能があり、表示しようとする Web ページの文字コードを自動的に検知して、該当する文字コードで表示させようとしますが、IE6 ではその選択肢の中に、UTF-8 が入っていないようです。

下記は、マイクロソフト社のサポート技術情報サイトで IE5 について書かれたページですが、IE6 にも継承されている可能性が高いと思われます。

・[IE5]文字セットと Internet Explorer 5 の自動選択機能について
 http://support.microsoft.com/kb/413581/ja  

他にも、IE6の「自動選択」は誤動作するので、文字化けする場合にはデフォルトのチェックを外すようにとマイクロソフト社のサポート技術情報サイトに掲載されています。

・検索サイトが日本語で表示されない場合の対処方法
 http://support.microsoft.com/default.aspx?scid=kb;ja;882865

●IE はどのくらいのシェアで使われているのでしょうか?

米調査会社 Net Applications による調査だと、2010年7月の世界的シェアは、1位:IE(62.12%)、2位:Firefox(24.43%)でした。

IEのバージョン毎のシェアは、1位:IE8(26.87%)、2位:IE6(16.97%)、3位:IE7(11.43%)となっているようです。

・Market share for browsers, operating systems and search engines(英語サイト)
 ブラウザの2010年7月のシェア
 http://www.netmarketshare.com/report.aspx?qprid=0&qptimeframe=M&qpsp=132

・ブラウザシェアの月別推移のグラフ
 http://marketshare.hitslink.com/report.aspx?qprid=3

IE だけで6割、その中で IE6 が2割近くも使われているということが判りますので、文字化けの影響はかなり大きいといえます。

●文字化けする場合のサイト管理者側の対策について

マイクロソフト社のページには、閲覧する側の対処方法が記載されていますが、Webサイトの管理者側(情報提供者側)で対応する方法はないのでしょうか?

全てのブラウザで100%文字化けしないようにすることは、ブラウザの特性を全て把握する必要があるため、非常に困難だと思いますが、極力文字化けしないように対応する方法をいくつかご紹介します。

  1. HTMLファイルをUTF-8にする
    ※BOMなしにすること
  2. METAタグで文字コードを名記し、且つ、<head>の一番上に記述する
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    ※上記の記述より前には半角英数字以外は記述しない
  3. JavaScriptやスタイルシートの外部ファイルを読み込む際には、そのファイルの文字コードもUTF-8にし、且つ、@charset "UTF-8" の宣言を一番最初に記述する

下記サイトなどを参照しました。
・Sun Eternity  charset=UTF-8がIEで対応していない件について
 http://annkokunokizinn.blog116.fc2.com/blog-entry-205.html

・Movable Type・MT:MT 3.36でUTF-8に設定しているのにブラウザではShift_JISと認識し文字化けしてしまう原因が判明:DOR underground
 http://dor-project.com/blog/blog/movable_typemt/mt_336utf8shift_jis.html

●まとめ

これからのWebサイトは、文字コードを UTF-8 にするのが一般的になってきていますので、閲覧者がどんなブラウザを使っていても、文字化けが極力発生しないような対策を取ることは、非常に重要です。

新しいブラウザのシェアが拡大しているとはいえ、文字化けの発生しやすい IE6 のシェアが2割近くもあるのは事実なので、少数派だと軽く考えず、しっかりとした対策を行いたいと思います。
(IE 恐るべし!)

<参考>
「多国語 HTML (UTF-8) の作り方」
 http://mlang1.osaka-gaidai.ac.jp/multi/how_to_utf8.html
「IE6のエンコードは時々正確に判定できない | OKWave」
 http://okwave.jp/qa/q1005201.html

PAGETOP