Рубрика: Интернет штучки
24 Фев 2010
Несколько раз при перезде на другой хостинг сталкивался с проблемой кодировки базы данных MySQL. Выглядит проблема следующим образом: заливаем сайт, настраиваем, затем восстанавливаем базу данных из дампа и вместо русских букв видим знаки вопроса или вообще непонятные символы. Связано это с тем, что многие хостеры не настраивают сервер для корректной работы с русской кодировкой. Особенно часто такая проблема встречается при переходе на VPS-тарифы, которые дают больше ресурсов, но предполагают и более высокий уровень знаний пользователей.
В большинстве случаев проблема возникает из-за того, что таблицы, которые использует база данных MySQL, созданы в кодировке latin1. Для того, чтобы проверить это, нужно зайти в PHPMyAdmin и прямо на первой странице посмотреть на “Сопоставление соединения с MySQL”.

Если там указано “latin1_swedish_ci” или что-то аналогичное, то русские буквы не будут отображаться.
Чтобы исправить эту проблему нужен доступ к конфигурационному файлу MySQL. Обычно на сервере он находится в директории “etc“:
/etc/my.cnf
Как я уже писал в статье про настройку Apache, желательно, чтобы на сервере был установлен Midnight Commander, любая навигация и изменения с его помощью намного удобнее и проще.
Итак, используя MC или другим доступным способом находим нужный файл и добавляем следующие строки в секцию “[mysqld]“:
default-character-set=cp1251
character-set-server=cp1251
collation-server=cp1251_general_ci
init-connect=”SET NAMES cp1251″
skip-character-set-client-handshake
Файл, после изменений сохраняем. Теперь нужно перезапустить весь сервер или непосредственно сервер БД MySQL при помощи следующей комманды:
service mysqld restart
Чтобы проверить кодировку необходимо с главного экрана PHPMyAdmin перейти в раздел “Базы данных“, в нижней строке столбца “Сравнение” должно быть значение “cp1251_general_ci“. Так же кодировку можно проверить SQL-запросом:
SHOW VARIABLES LIKE ‘ch%’;
После приведенных выше изменений, русские буквы должны отображаться нормально, если этого не происходит, то возможно проблема кроется уже в настройках php или браузера.
Сколько же еще продлится эта невыносимая жара?! Совершенно ничего не хочется делать, никого не хочется фотографировать, даже из дома выходить не хочется.
Скачайте флэш-плеер
3 комментария к статье: Как изменить кодировку базы данных
24 февраля 2010 в 23:45
Пора бы уже на utf8 переходить…
xela
25 февраля 2010 в 10:20
Кое-где еще осталось. Глядишь и поможет кому-нибудь.
Олег
15 апреля 2010 в 19:07
my.cnf настроен как показано в статье, а в phpMyAdmin все равно пишет: MySQL charset: UTF-8 Unicode (utf8)
при заполнении базы из под веб-интерфейса русскими символами получается крякозябра…
Please Help Me!