web-dev-qa-db-ja.com

HTML5ではcharsetメタタグが必要ですか?

W3C "HTML5とHTML4の違い"の草案は次のように述べています。

HTML構文の場合、作成者は文字エンコードを宣言する必要があります。

「必須」とはどういう意味ですか?

明らかに、ブラウザはcharsetメタタグなしでHTML5をレンダリングします。エンコーディングが指定されていない場合、ブラウザはどのエンコーディングを使用しますか?

基本的に、実際に<meta charset="">を含める必要があるのか​​、それとも99%の確率でブラウザが正しいエンコーディングを使用するのかを知りたいと思います。

リンクは次のとおりです。 http://www.w3.org/TR/html5-diff/#character-encoding

22
twiz

<meta charset="blah">を含める必要はありません。仕様にあるように、文字セットは、サーバーがHTTP Content-Typeヘッダーを使用するか、ダウンロードしたファイルの先頭にUnicodeBOMを含めることによって指定することもできます。

今日のほとんどのWebサーバーは、何も指定されていない場合、HTMLテキストデータのContent-Typeヘッダーにある文字セットを送り返します。 WebサーバーがContent-Typeヘッダーおよびを含む文字セットを返送しない場合、ファイルにはBOMが含まれていませんandページには<meta charset="blah">宣言が含まれていません。ブラウザには、通常、ホストコンピュータの言語設定に基づくデフォルトのエンコーディングがあります。これがファイルの実際の文字エンコードと一致しない場合、一部の文字が正しく表示されません。

ブラウザは99%の時間で適切なエンコーディングを使用しますか?ページがUTF-8の場合、おそらく。そうでない場合は、おそらくそうではありません。

W3Cは、 つのメソッドの優先順位ルールの概要を示すドキュメント を提供します。これは、順序がHTTPヘッダー、BOM、それに続くドキュメント内仕様(メタタグ)であることを示しています。

30
hrunting

Google PageSpeedブラウザ拡張機能によると、メタ要素で文字セットを宣言すると、「IE8の先読み機能が無効になり」、すべてをシリアルにダウンロードするように強制されるようです。

私の理解では、有効なHTML5には<meta charset-"utf-8">が必要でしたが、それが私がここで閲覧し始めた理由です。

仕様のドラフトは私にはかなり明確に思えます。.htaccessを介してHTTPヘッダーを追加するので、それを省略し始めます...したくはありませんが、IE8ユーザーを苦しめるだけです。少しだけ。

ありがとう。

@Jules Mazurこれらの点について何か参考になりますか?私がしていることのほとんどはSEOであり、アクセシビリティは私にとって重要であり、その場合、私はメタ宣言を残すことを受け入れる以上のものです。

4
adam-asdf

ドキュメントの文字セットをできるだけ早く指定することが重要です(Content-TypeヘッダーまたはMETAタグ)、そうでない場合、ブラウザはドキュメントを解析する前にエンコーディングを決定するために残され、これは ページの読み込み時間に悪影響を与える

1
Anton Eprev

これらのw3C仕様のほとんどが発表された1999年以来、標準化団体はベンダー(サーバー、ブラウザー、ドキュメントアプリケーションのメーカー)にエンコード規則に従い、メタタグを使用して意図を判断するように促してきました。しかし、貪欲さ、貧弱なブラウザデザイン、およびその他の要因により、長年にわたって一貫して仕様に従っているものはほとんどありません。その結果、システムが壊れています。 Mozillaのような一部のベンダーは、2001年以降、メタタグの標準に準拠していますが、MicrosoftやGoogleのような他のベンダーは準拠していません。

そのため、すべてのWeb開発者は、すべてのWebページの構築方法に緊急時対応設計を使用し、一貫性のないサポートにもかかわらず、メタタグやその他の標準マークアップを使用する必要があります。つまり、両方のメタタグタイプを使用します(<meta charset="UTF-8">および<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />)ただし、実際には、マークアップは、ページが最新のユーザーエージェントによってどのようにエンコードまたは解釈されるかを決定しません。ブラウザで使用されるエンコーディングの主な要因は、前述のように、そのページがソフトウェアによってどのようにエンコードされたかです。これは、現在人気のあるUnicodeの単なる標準であるUTF-8です。その後、ユーザーのブラウザはメタタグをスキップし、ページをチェックして作成者のエンコードの意図を推測します。

2000年には、このメタタグ全体の議論はさらに悪化しました。埋め込みユニコード文字を使用したHTML4の使用は、サーバーHTTPヘッダー、文字エンティティの使用、およびメタタグにもかかわらず、当時の最新のブラウザーがnot標準に従い、メタタグ、ページエンコーディング、またはエンコードされた文字エンティティは調べませんでした。そのため、失敗した標準の採用でサポートとシステムのすべての複雑な組み合わせと戦うために、テクノロジーのすべての組み合わせを使用して、Webページが正しくレンダリングされる可能性を高めることが最善です。

当時、私たちは貴重な教訓を学びました。Web標準が企業によって一貫して守られることは決してないということです。民間企業が標準を一貫して採用していない場合は、常にすべての形式とバージョンのタグ付けを使用するのが最善です。あらゆる形式で、ページを最大化するために、さまざまな形式の標準を使用して、さまざまなデバイスでページが正しく表示されます。今日では、それらは重要ではありません(ブラウザーがページを解析し、エンコードを決定するため)。

これは、Web標準の普遍的な採用を何らかの形で強制するまで、すべてのWebページの設計に使用される戦略である必要があります。マークアップデザイン。

0
Stokely