アカウント名:
パスワード:
<meta>で入ってればだいたいOKですね。たまにヘッダの記載と現物が違ってるとかいう行儀悪いサイトもありますけどそれは論外。
こんな文字化けは今まで他ブラウザでも散見されてきたものです。IEの自動判別は比較的優秀な方だったというのもあります。とにもかくにもサイト側がしっかりしてくれないことには始まらないですよね。MSもよく化けるぞコンチキショーの文句はサイト側に言ってくださいと宣言しちゃえばいいんですが。
html自体をどう読むかを示すcharset指定を、htmlの中で行うってのもおかしな話だよね。
幸いにして、大体の文字コードはASCII互換、非互換のものでもASCIIで読んだら間違ったmetaタグに解釈されるってことは現実的にはないので、それでうまくいってるようだけど。
最近、自サイトでの出来事。
<head><title>日本語タイトル</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8">
↑charset指定より上に日本語があると、真っ白なページになってしまう。IE限定。
↓の様に修正すると解決。
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>日本語タイトル</title>
昨日まで知らなかった。これは有名(というか当然)な現象なのでしょうか?IEだけが表示できなくて、それ以外のブラウザでは問題なしで、いままでIEがバカなんだとばかり思っていました。
エンコーディングを指定する部分を該当エンコーディングに依存する (非 ASCII となる) 部分より先に書いたら符号方式が未確定であるため自動判定となり、本来の目的である http-equiv (HTTP 応答ヘッダーの補完) の意味を為していないこととなります、記述順序的にはメタ情報として http-equiv を記述する場合は head 要素の先頭に配置し、そこまでの部分では ASCII の範囲内で記述する、というのが基本です。 今まではたまたま判定に成功していた、というだけでしょう。
余談ながら、head 要素の profile 属性に URI を指定することができますが、こうした場合に IDN をそのまま記述すると残念な事となるため、ASCII の範囲で記述しようとすると punycode で記述する事となります。 このため、ローカルシステム上で確認する場合ではしょうがないですが、できれば Web サーバー側から適切な応答を出させた方が記述上も楽でしょうね。
profile が指定されている head 要素なんてまず存在しないというのはありますが、先日 Google が提唱していた引用元明示のためのメタ情報拡張 [google.com]などは、HTML の仕様上はこれを指定するものだったりします。
判別に失敗するのはともかく、真っ白になるのは「ル」の3バイト目と「<」をシフトJISの1文字とみなして、HTMLの末尾まで終了タグが見つからないと解釈してしまうから。これはうまく使うとXSSになるはずだけど、欧米人にはあまり関係ないせいか(判別を誤ってもデフォルトが1バイトエンコーディングなら真っ白にはならない)ずーっと放置されてる。
IEの自動判別は比較的優秀な方だったというのもあります。
IEって、HTTPレスポンスやMETAタグのcharsetと実際の文字コードが異なると、実際の文字コードにあわせるみたいですね。firefoxとかだとcharset指定に合わせるから文字化けを起こす。
Web開発側の視点だと後者の方がコード間違いが検出できるからいいんだけど、ユーザー視点だとIEだとちゃんと表示できる→IE以外だと文字化け→ブラウザが悪いってなっちゃうんだよなぁ。
# Web開発で文字コードは悩みのタネです。# プロジェクトに参画して、「文字コードはどうするんですか?」と聞くと「何それ?」と返された事が過去何度も。
METAタグでおkとか思っちゃう奴はJISがハブられた理由を理解していない
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
ナニゲにアレゲなのは、ナニゲなアレゲ -- アレゲ研究家
HTTP応答ヘッダー (スコア:1)
* 今までいい加減に済ませていたHTTP応答ヘッダーのツケが出てきた。
* 今まで勝手に中身を判断する悪しき挙動に身を染めていたIEがまっとうになろうとして失敗した。
と、いうあたりだろうな。
Re:HTTP応答ヘッダー (スコア:1)
もっとも、jpnicやjprsのサイトでさえ、きっちりとしたHTTP応答ヘッダーにcharset付けてないので絶望的とも言えるな。
Re: (スコア:0)
<meta>で入ってればだいたいOKですね。
たまにヘッダの記載と現物が違ってるとかいう行儀悪いサイトもありますけどそれは論外。
こんな文字化けは今まで他ブラウザでも散見されてきたものです。IEの自動判別は比較的優秀な方だったというのもあります。
とにもかくにもサイト側がしっかりしてくれないことには始まらないですよね。MSもよく化けるぞコンチキショーの文句はサイト側に言ってくださいと宣言しちゃえばいいんですが。
Re:HTTP応答ヘッダー (スコア:1)
もちろん、わざわざ文字エンコーディングと一致してないcharsetを<meta>で指定するのはよろしうない。
Re:HTTP応答ヘッダー (スコア:1)
html自体をどう読むかを示すcharset指定を、htmlの中で行うってのもおかしな話だよね。
幸いにして、大体の文字コードはASCII互換、非互換のものでもASCIIで読んだら間違ったmetaタグに解釈されるってことは現実的にはないので、それでうまくいってるようだけど。
1を聞いて0を知れ!
IEでUTF-8が表示できない例 (スコア:1)
最近、自サイトでの出来事。
↑charset指定より上に日本語があると、真っ白なページになってしまう。IE限定。
↓の様に修正すると解決。
昨日まで知らなかった。これは有名(というか当然)な現象なのでしょうか?
IEだけが表示できなくて、それ以外のブラウザでは問題なしで、いままでIEがバカなんだとばかり思っていました。
Re:IEでUTF-8が表示できない例 (スコア:1)
エンコーディングを指定する部分を該当エンコーディングに依存する (非 ASCII となる) 部分より先に書いたら符号方式が未確定であるため自動判定となり、本来の目的である http-equiv (HTTP 応答ヘッダーの補完) の意味を為していないこととなります、記述順序的にはメタ情報として http-equiv を記述する場合は head 要素の先頭に配置し、そこまでの部分では ASCII の範囲内で記述する、というのが基本です。
今まではたまたま判定に成功していた、というだけでしょう。
余談ながら、head 要素の profile 属性に URI を指定することができますが、こうした場合に IDN をそのまま記述すると残念な事となるため、ASCII の範囲で記述しようとすると punycode で記述する事となります。
このため、ローカルシステム上で確認する場合ではしょうがないですが、できれば Web サーバー側から適切な応答を出させた方が記述上も楽でしょうね。
profile が指定されている head 要素なんてまず存在しないというのはありますが、先日 Google が提唱していた引用元明示のためのメタ情報拡張 [google.com]などは、HTML の仕様上はこれを指定するものだったりします。
Re: (スコア:0)
判別に失敗するのはともかく、真っ白になるのは「ル」の3バイト目と「<」をシフトJISの1文字とみなして、HTMLの末尾まで終了タグが見つからないと解釈してしまうから。
これはうまく使うとXSSになるはずだけど、欧米人にはあまり関係ないせいか(判別を誤ってもデフォルトが1バイトエンコーディングなら真っ白にはならない)ずーっと放置されてる。
Re: (スコア:0)
最近のブラウザが優秀だったのでしょうね。
Re: (スコア:0)
IEって、HTTPレスポンスやMETAタグのcharsetと実際の文字コードが異なると、実際の文字コードにあわせるみたいですね。
firefoxとかだとcharset指定に合わせるから文字化けを起こす。
Web開発側の視点だと後者の方がコード間違いが検出できるからいいんだけど、ユーザー視点だと
IEだとちゃんと表示できる→IE以外だと文字化け→ブラウザが悪い
ってなっちゃうんだよなぁ。
# Web開発で文字コードは悩みのタネです。
# プロジェクトに参画して、「文字コードはどうするんですか?」と聞くと「何それ?」と返された事が過去何度も。
Re: (スコア:0)
METAタグでおkとか思っちゃう奴はJISがハブられた理由を理解していない