パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

12月15日付けWindowsUpdate後、IEで文字化け多発中な模様」記事へのコメント

  • ISO_2022_JP は論外だが、基本的にコンテンツに合ったHTTP応答ヘッダーのContent-Typeフィールドのcharsetを指定していないのがいけない。HTTP 1.1辺りではcharsetパラメータはtext/htmlとかに必須でなかったかな?

    * 今までいい加減に済ませていたHTTP応答ヘッダーのツケが出てきた。
    * 今まで勝手に中身を判断する悪しき挙動に身を染めていたIEがまっとうになろうとして失敗した。

    と、いうあたりだろうな。
    • 自己フォロー。

      もっとも、jpnicやjprsのサイトでさえ、きっちりとしたHTTP応答ヘッダーにcharset付けてないので絶望的とも言えるな。
      • by Anonymous Coward on 2010年12月19日 14時13分 (#1876389)

        <meta>で入ってればだいたいOKですね。
        たまにヘッダの記載と現物が違ってるとかいう行儀悪いサイトもありますけどそれは論外。

        こんな文字化けは今まで他ブラウザでも散見されてきたものです。IEの自動判別は比較的優秀な方だったというのもあります。
        とにもかくにもサイト側がしっかりしてくれないことには始まらないですよね。MSもよく化けるぞコンチキショーの文句はサイト側に言ってくださいと宣言しちゃえばいいんですが。

        親コメント
        • by urandom (26447) on 2010年12月19日 14時38分 (#1876400)
          乱暴に言えば、HTTP応答ヘッダーがしっかりしてれば、<meta>なんてどうでも良いこと。
          もちろん、わざわざ文字エンコーディングと一致してないcharsetを<meta>で指定するのはよろしうない。
          親コメント
        • by greentea (17971) on 2010年12月20日 2時23分 (#1876722) 日記

          html自体をどう読むかを示すcharset指定を、htmlの中で行うってのもおかしな話だよね。

          幸いにして、大体の文字コードはASCII互換、非互換のものでもASCIIで読んだら間違ったmetaタグに解釈されるってことは現実的にはないので、それでうまくいってるようだけど。

          --
          1を聞いて0を知れ!
          親コメント
        • 最近、自サイトでの出来事。

          <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 の仕様上はこれを指定するものだったりします。

            親コメント
          • by Anonymous Coward

            判別に失敗するのはともかく、真っ白になるのは「ル」の3バイト目と「<」をシフトJISの1文字とみなして、HTMLの末尾まで終了タグが見つからないと解釈してしまうから。
            これはうまく使うとXSSになるはずだけど、欧米人にはあまり関係ないせいか(判別を誤ってもデフォルトが1バイトエンコーディングなら真っ白にはならない)ずーっと放置されてる。

          • by Anonymous Coward
            大昔の「やっちゃいけないこと」で見た記憶があります。
            最近のブラウザが優秀だったのでしょうね。
        • by Anonymous Coward

          IEの自動判別は比較的優秀な方だったというのもあります。

          IEって、HTTPレスポンスやMETAタグのcharsetと実際の文字コードが異なると、実際の文字コードにあわせるみたいですね。
          firefoxとかだとcharset指定に合わせるから文字化けを起こす。

          Web開発側の視点だと後者の方がコード間違いが検出できるからいいんだけど、ユーザー視点だと
          IEだとちゃんと表示できる→IE以外だと文字化け→ブラウザが悪い
          ってなっちゃうんだよなぁ。

          # Web開発で文字コードは悩みのタネです。
          # プロジェクトに参画して、「文字コードはどうするんですか?」と聞くと「何それ?」と返された事が過去何度も。

        • by Anonymous Coward

          METAタグでおkとか思っちゃう奴はJISがハブられた理由を理解していない

アレゲはアレゲを呼ぶ -- ある傍観者

処理中...