2.7.3.1. Неверная кодировка при выводе данных из базы
В случае, если кодировка сайта и базы данных не совпадает (часть текста на сайте выводится нормально, а часть текста из базы — в виде непонятных знаков), необходимо в скрипте, который подключается к базе данных, добавить команды, которые укажут MySQL-серверу кодировку, в которой нужно выводить текст. В зависимости от того, какую библиотеку PHP вы используете, команды будут выглядеть так:
- Для библиотеки mysql:
mysql_query("SET NAMES 'utf8' COLLATE 'utf8_general_ci'"); mysql_query("SET CHARACTER SET 'utf8'");
- Для библиотеки mysqli:
mysqli_query($link, "SET NAMES 'utf8' COLLATE 'utf8_general_ci'"); mysqli_query($link, "SET CHARACTER SET 'utf8'");
В командах:
- Вместо
utf8
необходимо указать нужную кодировку (например,cp1251
). - Вместо
utf8_general_ci
— нужное сопоставление кодировок (например,cp1251_general_ci
). Полный список кодировок и сопоставлений MySQL доступен в официальной документации. - Для библиотеки mysqli первым параметром указывается указатель на подключение к БД — в вашем скрипте он может быть отличным от
$link
(узнать его можно, посмотрев в исходном коде название переменной, которой присваивается результат выполнения функцииmysqli_connect()
).