Проблемы с кодировками БД

Решение проблемы с кодировкой базы данных MySQL.

Симптомы проблемы с кодировками в БД

а) В phpMyAdmin содержимое таблиц отображается корректно, а в скрипт приходят вопросительные знаки или нечитаемый текст.

б) Скрипт отправляет в базу данных заведомо русский текст, после чего на запросы к базе как в скрипт, так и в phpMyAdmin возвращаются знаки вопроса или нечитаемый текст.

Решение проблемы с кодировками

  • Попробуйте в начале скрипта, сразу после инициализации соединения с базой данных (mysql_connection), выполнить SQL-команду: SET NAMES (кодировка).

Где «кодировка» — та кодировка, в которой у вас (по вашему мнению) данные. Это может быть, например, cp1251, koi8r, utf8 и другие. Если буквы стали русскими — данные в базе находятся в правильной кодировке. Если буквы стали русскими, но слова не читаются (например, вместо слова «вопрос» возвращается слово «бнопня») — надо попробовать другую кодировку.

Пример PHP:

mysql_query("SET NAMES utf8");
  • Более простой способ -  открываем дамп БД в любом текстовом редакторе, позволяющем менять кодировку при просмотре и сохранение.
    1. Открываем дамп БД в редакторе, например KWrite
    2. Выбираем такую кодировку для просмотра, чтобы дамп БД отображался корректно, например cp1251:



    3. Сохраняем дамп БД, указывая кодировку utf-8: