кодировка=кодировка ISO-8859-1 с метательным предупреждение?

Я только что проверил HTML-документ, используя W3-валидатор , и обнаружил, что если я использую:

<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, я просто скопировал и вставил его со всего интернета.

может кто-нибудь указать мне справа направление, чтобы понять:

  • почему это происходит
  • и, как использовать тег DOCTYPE

6 ответов


пару пунктов:

  1. любая проверка HTML5 должна приниматься с солью. Спецификация все еще находится в активной разработке, и не все установлено в камне.
  2. вы используете синтаксис HTML4 для этого мета-тега. Попробуй!--0-->

тем не менее, HTML-валидаторы не служат такой большой цели в этот день и век.

кроме того, почему вам нужно указать этот конкретный charset?

редактировать:

мой плохой, по-видимому, по умолчанию для HTML4 был iso=8869-1. Тем не менее, кодировка по умолчанию для HTML5-utf-8.

более подробную информацию о доктипе HTML5 можно найти в этот пост по John Resig


изменение DOCTYPE просто отключает предупреждение - на самом деле это ничего не фиксирует.

iso-8859-1 и windows-1252 очень похожие кодировки. Они отличаются только символами, связанными с 32 байтовыми значениями от 0x80 до 0x9F, которые в iso-8859-1 сопоставляются с управляющими символами и в windows-1252 сопоставляются с некоторыми полезными символами, такими как символ евро.

управляющие символы бесполезны в HTML, и веб-авторы часто ошибочно объявляют iso-8859-1 и все же используйте одно или несколько из этих 32 значений, как если бы они использовали windows-1252, поэтому браузеры, когда они видят iso-8859-1 объявляемая кодировка автоматически изменит это значение на windows-1252.

валидатор просто предупреждает Вас, что это произойдет. Если вы не используете ни одно из 32-байтовых значений, вы можете просто игнорировать предупреждение-это не ошибка. Если вы, и вы действительно хотите iso-8859-1 интерпретация значений байтов, а не windows-1252 интерпретация, ты делаешь что-то не так.

опять же, это переключение происходит в браузерах для любого DOCTYPE, просто валидатор HTML5 более полезен в том, что он говорит вам, чем валидатор HTML4.


" использование windows-1252 вместо объявленной кодировки iso-8859-1." Это означает, что файл был сохранен с кодировкой windows 1252 при создании (он же Western Windows 1252 или cp1252), и ваша декларация кодировки говорит: "Эй, прочитайте этот файл с 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. См. vs


Я вижу, что это старый вопрос, но подумал, что лучше предоставить обновленный ответ. Возможно, я заметил что-то другое (после того, как столкнулся с той же проблемой и, таким образом, нашел этот пост, прежде чем работать сам).

валидатор W3C предлагает параметры, для которых используется кодировка валидатора. Вы указали кодировку в своем документе, поэтому вы должны увидеть "Encoding: iso-8859-1" в верхнем блоке информации после запуска валидатора. Справа от это, есть выпадающее меню. Измените выбор с "(автоматическое обнаружение)"на" iso-8859-1 (западноевропейский)". Затем валидатор будет использовать iso-8859-1 вместо своего собственного выбора, и вы не получите ошибку.


сделайте следующее:

стандарт ISO 8859-15 да -15 и он будет работать. Я знаю, что этот ответ новый, а вопрос старый, но идея в том, что будущие пользователи из поисковых систем, таких как я, получают правильный ответ


Не размещайте слишком много акций в валидаторах. Как правило, слишком много обходных путей Internet Explorer, особенно в css, которые будут отключать валидатор. Если ваши страницы работают во всех браузерах, и ваш клиент доволен, имеет ли значение, что говорит какой-то валидатор?

Если вы задаете тип документа html5, то вы должны соответствовать атрибуту meta charset. Попробуйте это, хотя для ваших страниц:

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

<body>
</body>
</html>