Разное

Настройки кодировки UTF-8 на сайте

В данной статье сведен перечень приемов для правильной работы сайта в кодировке UTF-8.

1

В .htacces

AddDefaultCharset UTF-8
AddCharset utf-8 .css .js .json .rss .xml
2

Кодировка файлов

Кодировка файлов PHP – UTF-8 без BOM. Если сохраните с ним, то в файлах, где есть сессии или заголовки, будет ошибка.

Для файлов .htacess кодировка должна быть ANSI, иначе будет ошибка 500.

3

В HTML

Также кодировка файлов – UTF-8 и мета-тег в body:

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

или

<meta charset="utf-8">
4

В index.php

header('Content-type: text/html; charset=utf-8');
setlocale(LC_ALL, 'ru_RU.UTF-8');
5

mb_string

При обработке строковых данных использовать функции из mb_string, стандартные с UTF-8 работают некорректно. Например strlen() возвращает неверное количество символов если в строке есть русские буквы.

Настройки mb_string в index.php:

mb_internal_encoding('UTF-8');
mb_regex_encoding('UTF-8');
mb_http_input('UTF-8');
mb_http_output('UTF-8');
mb_language('uni');

Или в .htaccess:

php_value  mbstring.internal_encoding "UTF-8"
php_value  mbstring.regex_encoding    "UTF-8"
php_value  mbstring.http_input        "UTF-8" 
php_value  mbstring.http_output       "UTF-8" 
php_value  mbstring.language          "uni"
Также во избежании проблем с кодировкой письма отправлять через функцию mb_send_mail().
6

База данных

Кодировка таблиц MySQL в utf8_general_ci, после соединения с БД сделать запрос:

SET NAMES utf8
17 сентября 2016