Почему моя HTML-кодировка вызывает ошибку? - PullRequest
0 голосов
/ 06 октября 2010

Я работаю на веб-сайте, и когда я пытаюсь проверить страницу, появляется следующая ошибка:

Кодировка символов указанная в заголовок 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"/>

Я не вижу, откуда исо-8859-1. Есть предложения?

Спасибо.

Ответы [ 3 ]

1 голос
/ 06 октября 2010

Это веб-сервер, который определяет кодировку в заголовке HTTP. Он установил его в ISO-8859-1. Но на своей странице вы написали:

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

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

Если вы хотите отправлять файлы в кодировке UTF-8, убедитесь, что содержимое действительно в кодировке UTF8, и проверьте информацию заголовка. В конечном счете, поведение зависит от конфигурации веб-сервера и генерации страницы.

1 голос
/ 06 октября 2010

Это заголовок вашего HTML-файла, а не заголовки HTTP, которые отправляет сервер.Элемент meta определяет эквиваленты HTTP-заголовков.Если отправляется как HTTP-заголовок, так и метаэлемент с эквивалентным, пользовательский агент должен решить, какой из них использовать.Он может работать в вашем браузере, но кажется, что используемый вами валидатор отдает приоритет фактическому HTTP-заголовку.

Поэтому вам нужно выяснить, как заставить сервер отправлять правильный заголовок Content-type.Если ваша страница генерируется PHP-скриптом, вы можете использовать header('Content-type:text/html;charset=UTF-8'); в начале вашего скрипта, чтобы исправить это.

1 голос
/ 06 октября 2010

Проверьте значения по умолчанию HTTP-заголовки , которые отправляются (вы можете увидеть это в firebug на вкладке NET, если вы его используете).

Возможно, установлен Content-Type заголовокiso-8859-1.

Заголовки HTTP отличаются от заголовка HTML (который является частью тела HTTP-сообщения), где ваш тег META указывает UTF-8 в качестве типа содержимого.

Поскольку эти два значения несовместимы, вы получаете сообщение об ошибке.

Решение:

  • Сделайте оба типа контента идентичными (либо UTF-8, либо iso-8859-1)
...