Как изменить кодировку базы данных

Рубрика: Интернет штучки

24 Фев 2010

kak-izmenit-kodirovku-bazy-dannyx-pic1Несколько раз при перезде на другой хостинг сталкивался с проблемой кодировки базы данных MySQL. Выглядит проблема следующим образом: заливаем сайт, настраиваем, затем восстанавливаем базу данных из дампа и вместо русских букв видим знаки вопроса или вообще непонятные символы. Связано это с тем, что многие хостеры не настраивают сервер для корректной работы с русской кодировкой. Особенно часто такая проблема встречается при переходе на VPS-тарифы, которые дают больше ресурсов, но предполагают и более высокий уровень знаний пользователей.

В большинстве случаев проблема возникает из-за того, что таблицы, которые использует база данных MySQL, созданы в кодировке latin1. Для того, чтобы проверить это, нужно зайти в PHPMyAdmin и прямо на первой странице посмотреть на “Сопоставление соединения с MySQL”.

kak-izmenit-kodirovku-bazy-dannyx-pic2

Если там указано “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 комментария к статье: Как изменить кодировку базы данных

Avatar

adw0rd

24 февраля 2010 в 23:45

Пора бы уже на utf8 переходить…

Avatar

xela

25 февраля 2010 в 10:20

Кое-где еще осталось. Глядишь и поможет кому-нибудь. :)

Avatar

Олег

15 апреля 2010 в 19:07

my.cnf настроен как показано в статье, а в phpMyAdmin все равно пишет: MySQL charset: UTF-8 Unicode (utf8)
при заполнении базы из под веб-интерфейса русскими символами получается крякозябра…
Please Help Me!

Оставить комментарий к статье: Как изменить кодировку базы данных

Сколько же еще продлится эта невыносимая жара?! Совершенно ничего не хочется делать, никого не хочется фотографировать, даже из дома выходить не хочется.

Музыкальная пауза


Скачайте флэш-плеер