0

Web サイトで作業していますが、ページを検証しようとすると、次のエラーが発生します。

HTTP ヘッダーに指定されている文字エンコーディング (iso-8859-1) が要素の値 (utf-8) と異なります。この検証には、HTTP ヘッダー (iso-8859-1) の値を使用します。

ヘッダーのコードは次のとおりです。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8"/>

iso-8859-1 がどこから来ているのかわかりません。助言がありますか?

ありがとう。

4

3 に答える 3

1

送信されるデフォルトのHTTP ヘッダーを確認します (使用している場合は、[NET] タブの firebug で確認できます)。

Content-Typeヘッダーが に設定されている可能性がありiso-8859-1ます。

HTTP ヘッダーは、HTML ヘッダー (HTTP メッセージの本文の一部) とは異なります。ここでは、META タグUTF-8がコンテンツ タイプとして指定されます。

2 つの値に互換性がないため、エラーが発生します。

解決:

  • 両方のコンテンツ タイプを同一にする ( 、または のいずれUTF-8iso-8859-1)
于 2010-10-06T15:00:30.147 に答える
1

HTTP ヘッダーでエンコーディングを指定するのは Web サーバーです。iso-8859-1に設定しました。しかし、あなたのページでは、次のように書いています。

<meta http-equiv="Content-type" content="text/html;charset=UTF-8"/>

これら 2 つの値は互換性がありません。Web サーバーが正しい (とにかくデータを送信した) としか思えず、バリデーターも同じ仮定をしています。

UTF-8 でエンコードされたファイルを送信する場合は、コンテンツが本当に UTF8 でエンコードされていることを確認し、ヘッダー情報を確認してください。最終的に、動作は Web サーバーの構成とページの生成に依存します。

于 2010-10-06T15:00:52.807 に答える
1

これは、サーバーが送信する HTTP ヘッダーではなく、HTML ファイルのヘッダーです。meta 要素は、HTTP ヘッダーに相当するものを定義します。HTTP ヘッダーが送信され、同等のメタ要素が存在する場合、ユーザー エージェントはどちらを使用するかを決定する必要があります。ブラウザで動作する可能性がありますが、使用しているバリデータが実際の HTTP ヘッダーよりも優先されるようです。

したがって、サーバーに正しい Content-type ヘッダーを送信させる方法を理解する必要があります。ページが PHP スクリプトによって生成されている場合はheader('Content-type:text/html;charset=UTF-8');、スクリプトの先頭で使用して修正できます。

于 2010-10-06T15:01:15.297 に答える