У меня есть несколько PHP страниц, повторяющих различные вещи в HTML со следующим кодом.
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
Однако, когда я проверяю использование валидатора W3C, он приходит с:
Кодировка символов, указанная в заголовке HTTP (iso-8859-1), отличается от значения в элементе (utf-8).
Я новичок в PHP, и мне было интересно, могу ли я изменить и изменить заголовок для файлов PHP в соответствии с файлами HTML.
Используйте header
, чтобы изменить заголовок HTTP:
header('Content-Type: text/html; charset=utf-8');
Примечание, чтобы вызвать эту функцию до того, как какой-либо вывод был отправлен клиенту. В противном случае заголовок также был отправлен, и вы, очевидно, не можете его изменить. Вы можете проверить это с помощью headers_sent
. Для получения дополнительной информации см. Справочную страницу header
.
Сначала убедитесь, что сами файлы PHP UTF-8 закодированы.
Метатег игнорируется некоторым браузером. Если вы используете только символы ASCII, это не имеет значения.
http://en.wikipedia.org/wiki/List_of_HTTP_header_fields
header('Content-Type: text/html; charset=utf-8');
Это проблема с тем, что ваш веб-сервер отправляет HTTP-заголовок, который не соответствует указанному вами. Инструкции о том, как заставить сервер отправлять правильные заголовки, см. эту страницу.
В противном случае вы также можете использовать PHP для изменения заголовков, но это нужно сделать до вывода любого текста с помощью этого кода:
header('Content-Type: text/html; charset=utf-8');
Более подробную информацию о том, как отправлять заголовки с помощью PHP, можно найти в документации для функции заголовка.
Вы также можете использовать более короткий путь:
<?php header('Content-Type: charset=utf-8'); ?>
См. RFC 2616, чтобы указать только кодировку.
Content-Type = "Content-Type" ":" media-type
и media-type = type "/" subtype *( ";" parameter )
Для правильной реализации вам необходимо изменить ряд вещей.
База данных (сразу после подключения):
mysql_query("SET NAMES utf8");
//Meta tag HTML.(probably its already set):
meta charset="utf-8"
header php.(before any output of the HTML):
header('Content-Type: text/html; charset=utf-8')
table-rows-charset(for each row):
utf8_unicode_ci
PHP отправляет заголовки автоматически при настройке внутренней кодировки
ini_set('default_charset', 'utf-8');
<meta>
.META
используется, когда HTML-документ не загружается по HTTP (например, с диска).