2012-04-01 8 views
1

私は現在Dive into HTML5を読んでおり、character encoding partに関する質問があります。HTTPヘッダーで文字エンコーディングを設定するか、または優先順位の高い<meta>要素で文字エンコーディングを設定しますか?

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">のように、<meta>要素が文字エンコードを設定するために使用されている理由は、誰もがWebサーバーにアクセスできないため、HTTPコンテンツタイプを設定できないこれは正しい方法です。さて、それは多くの意味があります。

しかし、その後、彼は続くと

HTTPヘッダーが好ましい方法であると言う、そして存在する場合、それは<meta>タグを上書きします。

これは意味をなさない。 <meta>タグでは、アクセスできない場合にサーバーの動作を上書きできるようになっていますか?

答えて

3

http-equivメタでは、サーバーが送信していない場合に値を指定できます。実際には、サーバーは静的なファイルを解析して適切なヘッダーを送信することを常に意図していました。 the HTML 3.2 spec(1997年1月)には、この説明を見てください:

HTTP-EQUIV属性は(NAME属性 の代わりに使用して文書が ハイパーテキスト転送プロトコル経由で取得された場合、特別な意味を持つことができますHTTP)。 HTTPサーバーは、HTTP-EQUIV属性で指定された プロパティーを使用して、HTTP応答にRFC 822スタイルの ヘッダーを作成することがあります。ただし、特定のHTTP ヘッダーを設定するために使用することはできません。詳しくは、HTTP仕様を参照してください。

+0

こんにちは、面白いです、ありがとう!私はそれが今どのように動作するのか理解していますが、サーバが実際にこれを行うかどうか知っていますか?適切な値を設定するためにファイルを解析しますか? – dsetton

+0

@dsetton最近のほとんどのサーバーは、スクリプト言語で構築された動的コンテンツを中心に構築されています。スクリプティング言語を使用している場合は、すでにヘッダーを変更することができます。私はこれが実際に起こったものではなく、W3Cが望んでいた機能だと思います。したがって、この特定のパラグラフは後続の仕様では削除されています。 – robertc

+0

ああ、私はこれが落ちたことに気がつかなかった。もう一度ありがとう、私はこの答えを受け入れています。 – dsetton

1

非常に古くから、サーバーは内容を調べて、metaタグから情報を得ることができました。彼らはほとんどそれをしなかったし、それは本当に奇妙なアイデアだった。何が起こったのか、サーバーはそのようなタグに注意を払っていません(通常のHTML文書をまったく解析しないので、読んだだけでも、それらを配信するだけです)が、ブラウザはそうします。

サーバーは一般に、HTTPヘッダーで使用されるように、ファイル名拡張子をメディア・タイプ(おそらくcharsetパラメーター)にマップするマッピング・テーブルを使用します。 PHPのような技術を使用する場合、ヘッダーはサーバー側のプログラムコードによって生成されます。

これは、サーバ側のタグがほとんどなく、サーバーがHTTPヘッダーにエンコード情報を提供していない場合や、リソースにローカルでアクセスする場合にブラウザで使用されます。現代のHTML仕様はこれを反映しており、HTTPヘッダーに優先順位を付けることを明示しています。これがブラウザーの機能です。

+0

ありがとう、それは非常によく説明された! – dsetton

関連する問題