В случае, если
предыдущая статья не смогла вам помочь, предлагаю еще пару действий по предупреждению возможных ошибок. И так углубимся в настройки ваших веб-инструментов:
ШАГ 3: Установка PHP для работы с Unicode
К сожалению, Unicode не тот формат в котором предпочитает работать PHP, так что вам придется настроить его вручную, чтобы PHP начал обращать внимание на UTF-8.
Во-первых, вы должны убедиться, что у вас включен MBstring. Если вы работаете на Linux, он может быть установлен по умолчанию. Если нет, то просто добавьте его:
$ yum install php-mbstring
Если вы устанавливаете PHP из исходника, вам нужно убедиться, что вы добавили в ваш конфигурационный файл:
--enable-mbstring
Теперь вы должны убедиться, что PHP понимает, что вы хотите работать с текстом в UTF-8. Добавьте следующие строки:
//setup php for working with Unicode data
mb_internal_encoding('UTF-8');
mb_http_output('UTF-8');
mb_http_input('UTF-8');
mb_language('uni');
mb_regex_encoding('UTF-8');
ob_start('mb_output_handler');
ШАГ 4: Настройка базы данных для работы с UTF-8
Лучше всего изменить работу сервера и базы данных на использование кодировки UTF8. Так вы будете уверены, что при переносе вашей БД на другой сервер символы сохранят свой первоначальный вид. Или в случае непредвиденных ситуаций сервер или БД не изменят вашу кодировку на ту, что стоит у них по умолчанию. Таким образом, рассмотрим следующие решения для таких БД:
MySQL
Пример SQL для создания базы данных с помощью UTF-8:
CREATE DATABASE mydatabase CHARACTER SET utf8 COLLATE utf8_Unicode_ci;
Postgres
В Postgres, вы можете создать базы данных с терминала:
$ createdb -E UTF8 mydatabase
Или в SQL:
CREATE DATABASE mydatabase WITH ENCODING 'UTF8';
ШАГ 5: Установка сервера базы данных для обработки UTF-8
Нам необходимо объяснить нашему серверу базы данных, что он должен работать в UTF-8.
MySQL
MySQL имеет широкий диапазон опций для настройки кодировки в my.cnf. Самый безопасный способ обеспечить работу ваших скриптов на UTF-8 для отправки и получения из MySQL – это установка кодировки после установки подключении к серверу, отправив эти запросы:
SET NAMES utf8;
SET CHARACTER SET utf8;
Postgres
Для Postgres, почти то же самое:
SET NAMES 'UTF8';
На этом все! Может быть с первого взгляда это кажется ужасным, но уже после первой настройки эти действия станут тривиальными для вас, а в будущем помогут работать с Unicode до конца жизни.