|
お仕事中、お客様から電話が入った。こちらから納品したHTMLが文字化けするのだという。UTF-8で作ってあるから、Internet Explorerの「表示」→「エンコード」で「自動選択」にチェックを入れてくださいということでお茶を濁したつもりだった。しかし... そうすると、今度はお客さんのイントラネット上のデータが文字化けするのだそうだ。 そもそもこちらのデータはMETAタグで charset="UTF-8" を指定しているのだから、「自動選択」になっていてもいなくても「UTF-8」で表示されなければおかしいはずなのだ。実際、Firefoxでは問題なく表示できている。 さらにもう一つ言わせてもらうと、「自動選択」にしたことでお客さんのイントラネットのデータが化けるのもおかしな話なのだ。 というわけでIEの文字コードに関する挙動を調べたら、色々と奇妙なことが判明した。 まず、IE6から。 UTF-8でHTMLを作成する。ただし、文字コード宣言の前に日本語文字を入れる。 例えば <html> <head> <title>日本語</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> というようにしておく。 エンコードを「自動選択」にしておかないとIE6はこれをShift_JISとして認識。ページは文字化けを起こしてしまう(おかしい)。 エンコードを「自動選択」にすると、IE6はこれをUTF-8として認識。ページはきれいに表示される(期待通り)。 しかし、上記のHTMLの<title>と<META>を入れ替え、文字コード宣言の前に日本語の文字が入らないようにすると、エンコードがどうなっていようとIE6はこれをUTF-8として認識。ページはきれいに表示される(期待通りだが...???) じゃあ、とにかく文字コード宣言の前に日本語の文字を入れなければいいのかと思い、先にMETAタグを置いたファイルを作ってIE7で試してみると、今度は「自動選択」を外した場合に文字化け。挙動が違う。 で、さらなる情報を求めてネットを検索していると http://support.microsoft.com/kb/413581/ja というページに行き当たった。 1.IEは、HTMLで文字コード宣言がある場合はその文字コードを使用する 2.HTMLで文字コード宣言がない場合は、「エンコード」メニューでユーザーが最後に指定した文字セットが使用される。 2-1.「エンコード」でユーザーが最後に選択したのが「自動選択」であった場合、IEは表示可能なありとあらゆる文字セットの中から、そのページを表示するのに適切と思われる文字コードを自動的に選択する 2-2.「エンコード」でユーザーが最後に指定したのが「日本語(自動選択)」であった場合、IEはJIS、Shift_JIS、EUCのいずれかから、もっともそのページを表示するのに適切と思われる文字コードを自動的に選択する(UTF-8は候補に含まれていない!) ということらしい。 これと、今日の実験結果を付き合わせると、文字コード宣言以前に日本語の文字が見つかると、IE6はそのページで「文字コード宣言はなされていない」ことにしてしまうらしい。IE7に至っては何をどう判断しているのかまったく不明だ。 さらに、今日のテストにおいて、条件分けが足りていないことも判明した。 IE6のテストにおいても、IE7のテストにおいても、「最後に選択してあったエンコードが何であったか」にまったく注意していなかった。 明日以降、Internet Explorerのこの挙動について、さらに調査を加えたいと思う。 |
| << 前記事(2007/09/06) | トップへ | 後記事(2007/09/08)>> |
| タイトル (本文) | ブログ名/日時 |
|---|---|
絆の定義
ようやくリニューアル。って、ログイン機構とかを見直したくらいですが。 ...続きを見る |
今感じていること 2008/08/13 10:55 |
| 内 容 | ニックネーム/日時 |
|---|---|
検索からアクセスさせていただきました。 |
タガワ 2007/11/22 11:18 |
お役に立てて幸いです。 |
kazuyoshikakihara 2007/11/23 00:42 |
私も同様の悩みでこのページに着てしまいました。 |
FRYBAREC 2008/01/02 22:53 |
FRYBARECさん、どういたしまして。 |
kazuyoshikakihara 2008/01/04 23:10 |
私も同様の問題で検索していたところこちらにたどり着きました。 |
イザワ 2008/02/19 17:33 |
この記事だけ妙にアクセスが多いので、文章の拙さがだんだん気になってきました。 |
kazuyoshikakihara 2008/02/19 23:39 |
お役に立たないかも知れませんが。 |
通りすがり 2008/07/19 18:12 |
記事を作ったのが少し前のことだったので、あらためて調べなおしました。「UTF-8N」すなわちBOMなしでテストした結果が記事のとおりとなっています。 |
kazuyoshikakihara 2008/07/20 16:12 |
| << 前記事(2007/09/06) | トップへ | 後記事(2007/09/08)>> |