インターネット エクスプローラーが HTML ページをレンダリングするときに間違った文字セットを使用する

警告

廃止され、サポート対象外となった Internet Explorer 11 デスクトップ アプリケーションは、特定のバージョンの Windows 10 で Microsoft Edge の更新プログラムを通じて完全に無効になります。 詳細については、「Internet Explorer 11 デスクトップ アプリの廃止に関する FAQ」をご覧ください。

この記事では、不正な文字セットを使用してインターネットエクスプローラー HTML ページがレンダリングされる問題を解決するためのメソッドについて説明します。

元の製品バージョン:インターネット エクスプローラー
元の KB 番号: 928847

現象

Microsoft Internet エクスプローラーが HTML ページをレンダリングすると、間違った文字セットが使用されます。 正しい文字セットが HTML ページのタグで指定されている場合でも、METAインターネット エクスプローラーはこれを行います。

たとえば、インターネット エクスプローラーでは、HTML ページで次METAのタグで UTF-8 が指定されている場合でも、Shift-JIS 文字セットを使用して日本語 HTML ページをレンダリングできます。

<META http-equiv=Content-Type content="text/html; charset=utf-8">

原因

この問題は、1 つ以上の条件が満たされている場合に発生する可能性があります。

  • [自動選択] 設定は、インターネット エクスプローラーで有効になっています。 この設定は、インターネット エクスプローラー HTML ページに使用されるコード ページを決定するのに役立ちます。
  • システム ロケール設定は、タグでMETA指定された文字セットとは異なります。
  • META文字セットを指定するタグが、MSHTML によって解析される HTML データの最初のチャンク内にありません。 通常、これは、タグが最初の 4 KB のデータの残りの部分を介して、最初の 256 バイトのデータの後のどこかに配置されることを意味します。
  • サーバーが低速システムであるか、サーバーが HTTP 応答の最初の部分を中断して、応答にタグが含まれていないようにします META 。 この問題は、チャンク エンコードを有効にした場合に発生する可能性があります。
  • インターネット エクスプローラーが解析する最初のチャンクを メソッドにIMultiLanguage::ConvertStringToUnicode渡すと、インターネット エクスプローラーは変換を実行できません。

注:

この問題に影響を与える可能性のある追加の条件があります。 これらの追加条件は非常にコード固有であり、ここには記載されていません。

解決方法

この問題を解決するには、以下のいずれかの方法を使用します。

  • インターネット エクスプローラーで [自動選択] 設定を無効にします。
  • HTTP ヘッダーに文字セットを指定します。
  • タグを META 、MSHTML によって解析されたデータの最初のキロバイト内に移動します。 パーサーが一度に読み取るデータの量はわかりませんが、この場所で問題が解決されます。
  • サーバーの初期 HTTP 応答のサイズを大きくします。 初期サイズは 1 KB 以上にする必要があります。
  • [システム ロケール] 設定が、HTML ページで指定されているタグのMETA文字セットと一致していることを確認します。