Установить HTTP-заголовок в UTF-8 с помощью PHP

У меня есть несколько страниц 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, чтобы указать только кодировку.

Для правильной реализации вам необходимо изменить ряд вещей.

База данных (сразу после подключения):

 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');