web-dev-qa-db-ja.com

charset = iso-8859-1 <!DOCTYPE HTML>が警告をスローしますか?

W3-validator を使用してhtmlドキュメントを検証したところ、次のことがわかりました。

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

と:

<!DOCTYPE HTML>
  • 警告をスローしますLine 4, Column 72: Using windows-1252 instead of the declared encoding iso-8859-1.

しかし、私が使用する場合は修正されています:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

何が起こっているのか本当にわかりません。DOCTYPEタグの使い方もわかりません。Webからコピーして貼り付けただけです。

誰かが私を正しい方向に向けて理解してもらえますか?

  • なぜこれが起こるのか
  • dOCTYPEタグの使用方法
9
ajax333221

カップルポイント:

  1. HTML5の検証はすべて、一粒の塩で行う必要があります。仕様はまだ活発に開発中であり、すべてが確定しているわけではありません。
  2. そのメタタグにHTML4構文を使用しています。 <meta charset="iso-8859-1">をお試しください

とはいえ、HTMLバリデーターはこの時代ではそれほど大きな目的を果たしていません。

また、なぜ特定の文字セットを指定する必要があるのですか?

[〜#〜]編集[〜#〜]

悪いことに、どうやらHTML4のデフォルトはiso = 8869-1でした。つまり、HTML5のデフォルトの文字セットはutf-8です。

HTML5 doctypeの詳細については、John Resigの this post を参照してください。

6
Andrew Stewart

DOCTYPEを変更しても警告はオフになります。実際には何も修正されていません。

iso-8859-1windows-1252は非常に似たエンコーディングです。これらは、0x80から0x9Fまでの32バイト値に関連付けられている文字のみが異なります。iso-8859-1では制御文字にマップされ、windows-1252ではユーロ記号などのいくつかの便利な文字にマップされます。

制御文字はHTMLでは役に立たないため、Web作成者は誤ってiso-8859-1を宣言しているのに、windows-1252を使用しているかのように32個の値の1つ以上を使用しているため、宣言されているiso-8859-1文字セットをブラウザが認識すると、自動的にwindows-1252に変更されます。

バリデーターは、これが起こることを単に警告しています。 32バイト値のいずれも使用していない場合は、警告を無視できます。これはエラーではありません。そうであり、iso-8859-1の解釈ではなく、windows-1252のバイト値の解釈を本当に望んでいる場合は、何か間違っています。

繰り返しになりますが、この切り替えはどのDOCTYPEのブラウザーでも発生します。HTML5バリデーターは、HTML4バリデーターよりも、それが何を伝えているかについてより役立つというだけです。

17
Alohci

「宣言されたエンコーディングiso-8859-1の代わりにwindows-1252を使用します。」これは、ファイルが作成時にエンコーディングウィンドウ1252(別名Western Windows 1252またはcp1252)で保存され、ファイルのエンコーディングではない場合、charset宣言で「このファイルをiso-8859-1で読み取ります」と表示されます。

そのため、メタ文字セットが存在します。これは、送信/読み取り/使用しているファイルのエンコーディングを宣言するために存在するため、たとえばブラウザがドキュメントを読み取るときに、ファイルが使用しているエンコーディングを認識しています。

詳細には、この文字セットが宣言されています。

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

ただし、検証しているファイルは、実際にはWindows 1252でエンコードされています。方法どうして?使用しているテキストエディタと、ファイルの保存に使用しているエンコーディングを確認してください。エンコードを変更するようにエディターを構成できる場合は、使用するものを選択します。

HTML5について

使用する

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

または

<meta charset="iso-8859-1">

どちらもHTML5に有効です。 <meta charset = "utf-8"> vs <meta http-equiv = "Content-Type"> を参照してください

4
delroh

以下に従ってください:

ISO 8859-15ええ-15で動作します。私はこの答えが新しく、質問が古いことを知っていますが、アイデアは、私のような検索エンジンから来る将来のユーザーが正しい答えを得るということです

1
novato

これは古い質問ですが、更新された回答を提供する方が良いと思いました。たぶん他の人が気づいていないことに気づいたかもしれません(同じ問題が発生したため、自分で解決する前にこの投稿を見つけました)。

W3Cバリデーターは、バリデーターが使用するエンコーディングのオプションを提供します。ドキュメントでエンコーディングを指定したので、バリデーターが実行されると、情報の上部ブロックに「エンコーディング:iso-8859-1」が表示されます。その右側にプルダウンメニューがあります。選択を「(自動検出)」から「iso-8859-1(西ヨーロッパ言語)」に変更します。バリデーターは独自に選択する代わりにiso-8859-1を使用するため、エラーは発生しません。

1
Roger F. Gay

バリデーターに多くのストックを配置しないでください。バリデーターを作動させるInternet Explorerの回避策(特にcss)は通常、多すぎます。ページがすべてのブラウザーで機能し、クライアントが満足している場合、一部のバリデーターの発言が問題になりますか?

Html5 doctypeを指定する場合は、メタ文字セット属性と一致している必要があります。あなたのページでこれを試してください:

<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
</head>

<body>
</body>
</html>
0
JoeL