charset = iso-8859-1 сбросать предупреждение? - PullRequest
9 голосов
/ 03 января 2012

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

<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 ]

17 голосов
/ 03 января 2012

Изменение 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.

6 голосов
/ 03 января 2012

Пара баллов:

  1. Любая проверка HTML5 должна выполняться с небольшим количеством соли.Спецификация все еще находится в активной разработке, и не все в камне.
  2. Вы используете синтаксис HTML4 для этого метатега.Попробуйте <meta charset="iso-8859-1">

Тем не менее, валидаторы HTML не имеют большого значения в наше время.

Кроме того, зачем вам нужно указывать именно этот набор символов?

РЕДАКТИРОВАТЬ :

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

Более подробную информацию о типе HTML5 можно найти в этой записи Джона Резига

4 голосов
/ 04 декабря 2013

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

1 голос
/ 26 апреля 2015

Выполните следующие действия:

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

1 голос
/ 05 января 2013

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

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

0 голосов
/ 04 апреля 2013

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

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

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

<body>
</body>
</html>
...