Принудительная установка кодировки документа в php и htaccess

Когда Вам требовалось изменить отображение части HTML документов, PHP скриптов на сервере, или кодировку одного конкретного документа, Вы наверняка могли столкнуться с проблемой:
Браузер, раз за разом, оставляет общую для всего сайта кодировку.

Попробуем с этим справиться и переключить кириллицу (windows-1251) на юникод (utf-8).
Во-первых, общее правило для документов – указываем кодировку в шапке страницы между тегами <head>:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

Во-вторых, принуждаем конкретный файл к смене кодировки посредством файла .htaccess (этот файл обычно располагается в корне сайта, хотя иногда может быть скрыт от пользователя хостинга, в этом случае Вам придётся обратится в службу поддержки). Добавляем строки:

<FilesMatch "^utf-8\.(html|php)$">
AddDefaultCharset utf-8
</FilesMatch>

Директива FilesMatch указывается для перечисления файлов к которым будет применено входящее в директиву правило. В нашем случае – это AddDefaultCharset добавление кодировки utf-8 для файлов utf-8.html и utf-8.php. Директива FilesMatch поддерживает языка регулярных выражений, то есть поиск по шаблону.

Не забудьте  и тот факт, что html документ, должен был быть сохранен в кодировке urf-8 заранее. Для этого используются штатные функции Вашего текстового или визуального редактора HTML (например Dreamwaver‘а).

Для скрипта PHP можно использовать ещё один прием. А именно заголовки header(). Чтобы поменять кодировку отображения страницы, достаточно в самом начале скрипта добавить строку:

header("Content-type: text/html; charset=utf-8");

Тем не менее , всё что Вами было написано внутри скрипта на кириллице, будет по прежнему на кириллице и при выводе в браузер , Вы скорее всего увидите так называемые крякозябры иероглифы.
Для внутренней перекодировки скрипта применяется функция iconv(), о которой уже шла речь ранее.
Не вдаваясь в подробности, Вам придётся все русские предложения перекодировать следующим образом:

<?
$hello = "Приветствую на моём сайте!";
$helloUTF = iconv("cp1251","utf-8",$hello);
?>

Опубликовано 11.02.2014 в 07:03 · Автор Вебдизайнеру, сисадмину, вебмастеру · Ссылка
Рубрики: HTML, PHP программирование, Настройки хостинга · Теги: , , , , , , , ,