кодировка=кодировка 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 ответов
пару пунктов:
- любая проверка HTML5 должна приниматься с солью. Спецификация все еще находится в активной разработке, и не все установлено в камне.
- вы используете синтаксис 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>