Как установить кодировку символов в UTF-8 для default.html?
Я потратил последние несколько часов на то, чтобы мой сайт проверил HTML 4.01 Strict, и я действительно преуспел в этом, но есть еще одно предупреждение, от которого я не могу избавиться. Предупреждение:
Несоответствие кодировки символов!
Кодировка символов, указанная в HTTP-заголовок (iso-8859-1) является отличается от значения в элемент (utf-8). Я буду использовать значение из заголовка HTTP (iso-8859-1) для это подтверждение.
Рассматриваемая страница www.dubiousarray.net/default.html. Как вы можете видеть из источника страницы, у меня есть следующий мета-элемент:
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
и я убедился, что файл default.html сохраняется с кодировкой UTF-8. Странным является то, что все остальные страницы на сайте проверяются без этого предупреждения, и они имеют один и тот же метатег и были сохранены точно так же. Я уверен, что это связано с конфигурацией сервера. Файл .htaccess выглядит так:
# Use PHP5 as default
AddHandler application/x-httpd-php5 .php
AddDefaultCharset UTF-8
но я испробовал все исправления, показанные на этой странице, и никто из них не работал. Есть ли у кого-нибудь идеи о том, как избавиться от этого предупреждения? Последнее, в Firefox, если вы щелкните правой кнопкой мыши на странице и выберите "Просмотреть страницу информации", default.html показывает как ISO-8859-1
а на других страницах отображается UTF-8.
Спасибо, Джейкоб
EDIT: что-то еще следует отметить, так это то, что весь html файл был создан и сохранен точно так же (кодировка символов установлена в UTF-8 без спецификации), но default.html является единственным, который не отображается как UTF-8. Поэтому я полагаю, что сервер делает что-то особенное для файла default.html, хотя я не уверен, что, поскольку его нет в файле .htaccess.
Ответы
Ответ 1
Вам нужно заменить заголовок HTTP-уровня.
Это должно работать:
<?php
header('Content-type: text/html; charset=utf-8');
?>
Обратите внимание, что приведенное выше должно быть ПЕРВОЙ вещь в вашем файле. Без исключений. Видеть
http://us2.php.net/manual/en/function.header.php
Для общей информации о том, как изменить заголовок набора символов в разных веб-стеках, см.
http://www.w3.org/International/O-HTTP-charset
Larry
Ответ 2
Сервер четко маркирует документ как ISO-8859-1 в заголовках HTTP. Попробуйте сохранить default.html, используя кодировку UTF-8, с соответствующим редактором.
Ответ 3
Хорошо, я придумал частичное решение моей проблемы. Поскольку это был только файл default.html, который вызывал предупреждение, я предположил, что сервер делает что-то особенное для него из-за его имени. Поэтому я создал новый файл с именем home.html с тем же содержимым, что и файл default.html, и указал файл .htaccess на новый файл (см. Строку 3 ниже).
# Use PHP5 as default
AddHandler application/x-httpd-php5 .php
DirectoryIndex home.html
AddDefaultCharset UTF-8
Это фиксировало проблему, и все файлы теперь распознаются как UTF-8. Я все еще не уверен, что сервер делает с файлом default.html или где настройки, касающиеся этого, но по мере того, как моя проблема ушла, я забуду об этом.
Ответ 4
Вы можете удалить AddDefaultCharset
из .htaccess
и проверить кодировку? Я сохранил исходный код HTML вашей веб-страницы и открыл его. Кодирование было обнаружено как UTF-8. Однако при просмотре одной и той же веб-страницы, обслуживаемой вашим веб-сервером, кодировка - ISO-8859-1. Вот почему я предлагаю удалить прежнее избыточное правило.
Ответ 5
включить это в свой код:
<meta charset="utf-8" />