Как установить кодировку символов в UTF-8 для default.html? - PullRequest
16 голосов
/ 25 мая 2009

Последние несколько часов я потратил на то, чтобы проверить правильность HTML 4.01 на своем веб-сайте, и я действительно преуспел в этом, но есть одно предупреждение, от которого я не могу избавиться. Предупреждение:

Несоответствие кодировки символов!

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

Спасибо, Джейкоб

РЕДАКТИРОВАТЬ: Что еще нужно отметить, это то, что все html-файлы были созданы и сохранены одинаково (кодировка символов установлена ​​в UTF-8 без BOM), но только default.html не отображается UTF-8. Поэтому я предполагаю, что сервер делает что-то особенное с файлом default.html, хотя я не уверен, что, поскольку в файле .htaccess нет признаков этого.

Ответы [ 5 ]

26 голосов
/ 25 мая 2009

Вам необходимо заменить заголовок уровня 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 голосов
/ 25 мая 2009

Сервер четко помечает документ как ISO-8859-1 в заголовках HTTP. Попробуйте сохранить файл default.html, используя кодировку UTF-8 с соответствующим редактором.

1 голос
/ 25 мая 2009

Хорошо, я придумала частичное решение моей проблемы. Поскольку это был только файл 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 или где находятся соответствующие настройки, но поскольку моя проблема исчезла, я забуду об этом.

0 голосов
/ 07 июля 2017

включите это в свой код:

<meta charset="utf-8" />
0 голосов
/ 25 мая 2009

Можете ли вы удалить AddDefaultCharset из .htaccess и проверить кодировку? Я сохранил исходный HTML-код вашей веб-страницы и открыл его. Кодировка была обнаружена как UTF-8. Однако при просмотре той же веб-страницы, которую обслуживает ваш веб-сервер, используется кодировка ISO-8859-1. Вот почему я предлагаю удалить прежнее избыточное правило.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...