Что мне следует обновить в настройках PHP, когда я изменяю базы данных MySQL на кодировку UTF-8? - PullRequest
0 голосов
/ 23 ноября 2011

В настоящее время у меня есть веб-сайт на магистрали PHP 5 и MySQL.В базах данных MySQL используется кодировка cp1252 West Europe ( latin1 ) и сопоставление latin1_swedish_cp.

Я бы хотел переключить базы данных MySQL на кодирование UTF-8 и utf8_general_ci.Мне не нужна помощь в преобразовании контента в MySQL, так как я обрабатываю его и переделываю весь контент на сайте.Предположим, что я делаю это правильно для этого разговора (хотя, вероятно, нет).

Я знаю, что в php.ini есть настройки, такие как default_charset, по умолчанию iso-8859-1.Я также знаю, что многие функции PHP для работы со строками, такие как strlen(), а также регулярные выражения, не будут работать правильно, если я имею дело со строками, которые содержат многобайтовые символы UTF-8, что, как я понимаю, не все символы вUTF-8 set.

Что мне нужно сделать на стороне сервера PHP и в моем веб-приложении, чтобы справиться с UTF-8, выходящим из моей базы данных?Что все это делает?

Ответы [ 2 ]

1 голос
/ 23 ноября 2011

Вам потребуется настроить соединение с БД с помощью:

mysql_query("SET NAMES 'utf8'");

А затем замените ваши "обычные" строковые функции на функции из модуля mbstring: http://php.net/manual/en/book.mbstring.php как mb_strlen, mb_substr и т. д.

А также укажите кодировку UTF-8, где это необходимо, например, в функции htmlentities:

echo htmlentities($str, ENT_QUOTES, "UTF-8");
0 голосов
/ 23 ноября 2011

См. эта функция.

Кроме того, вы должны сохранять все файлы в кодировке utf-8 (желательно без спецификации).

...