23

HTTP 経由で取得された HTML ドキュメントの例には、次のものがありません。

  • HTTPContent-Typeヘッダー
  • HTML<meta charset="<character encoding>" />
  • HTML<meta http-equiv='Content-Type' content='Type=text/html; charset=<character encoding>'>

HTML5についてですが、文字エンコーディングはデフォルト、例えばUTF-8を想定していますか? それとも、HTML ドキュメントを読み込んでデフォルトを選択するのは、完全にアプリケーション次第ですか?

4

1 に答える 1

21

文字セットは、次の規則を使用して決定されます。

  1. ユーザーオーバーライド。
  2. 「Content-Type」フィールドの HTTP「charset」パラメーター。
  3. HTML ドキュメント自体の他のデータの前にあるバイト オーダー マーク。
  4. 「charset」属性を持つ META 宣言。
  5. 「http-equiv」属性が「Content-Type」に設定され、値が「charset」に設定された META 宣言。
  6. 詳細不明のヒューリスティック分析。

...その後...

  1. Unicode Technical Standard #22 で定義されている Charset Alias Matching ルールに従って、指定された文字エンコーディング文字列を正規化します。
  2. 問題のあるいくつかのエンコーディングをオーバーライドします。つまり、いくつかのエンコーディングを意図的に別のエンコーディングであるかのように扱います。最も一般的な上書きは、US-ASCII および ISO-8859-1 を Windows-1252 として扱うことですが、この表にリストされている他のエンコードの上書きがいくつかあります。仕様に記載されているように、「上の表に従って、特定のエンコーディングを他のエンコーディングとして扱うという要件は、W3C Character Model 仕様に意図的に違反しています。」

しかし、最も重要なことは次のとおりです。

すべてのHTML ドキュメントで常に文字エンコーディングを指定する必要があります。そうしないと、問題が発生します。難しい方法 (HTTP Content-Type ヘッダー)、簡単な方法 (宣言)、または新しい方法 (属性) のいずれかを実行できますが、実行してください。ウェブありがとうございます。<meta http-equiv><meta charset>

ソース:

于 2012-09-13T12:22:13.807 に答える