PHP, кодировки, кракозябры

utf-8При веб-разработке иногда возникает проблема с кодировками. Вместо русских букв на странице стоят кракозябры. Причин может быть несколько:
1) cодержимое базы данных,
2) содержимое страницы,
3) заголовки страницы (head).

Как обычно, поиск позволяет познакомиться с «разбором» вопроса:
phpfaq.ru
HTML кодировка, Андрей Морковин.

У меня сейчас была 3-я причина, проблема с заголовками.
Стандартно html-страница должна начинаться с содержимого тега head, в котором и можно задать кодировку. Но если в начале страницы, перед html-тегами, стоит php-код, и происходит обмен данными с сервером, то сервер выбирает кодировку из своих настроек (надо же ему определить, чем раскодировать полученные данные). Соответственно, в такой ситуации возможны 2 решения:
1) либо выставить на сервере нужную кодировку по умолчанию; в файле .htaccess добавить строку «AddDefaultCharset UTF-8»;
2) либо задать кодировку страницы в первой строке php-командой: header(‘Content-Type: text/html; charset=»utf-8″‘);

Когда-то читал, что даже один пробел в начале страницы может привести к кракозябрам. Оно и понятно. Сервер берет кодировку из своих настроек «по-умолчанию», чтобы раскодировать полученный символ (и узнать что это пробел). И выбранная кодировка сервера, вполне, может разойтись с задуманной кодировкой разработчика.
У хостеров, видимо, все еще выставлена кодировка «win-1251», по-старинке. А разработчики уже используют «utf-8».

Запись опубликована в рубрике PHP с метками . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *