Вы здесь
MySQL and cp1251
У меня в базе MySQL все записи хранятся в кодировке cp1251. Сделано это по причине того что все клиенты, работающие с базой, сидят под виндами, да и наши сайты выдают страницы в cp1251.
Все это нормально работало до момента установки Kubuntu 7.04 на мой рабочий комп. При работе с базой с этой машины я получал строки в виде '?????', хотя остальные сервера с установленной SuSE 10.0 выдавали нормальный результат...
Начались "танцы с бубном"... Первым делом я вспомнил, что имел привычку самому собирать rpm-ку MySQL для своих серверов с жестко зашитой опцией --with-charset=cp1251, поэтому и клиенты и сервера работали с этой кодировкой по умолчанию.
При переходе на Kubuntu я решил не мучится и поставить пакет MySQL, входящий в дистрибутив. Вот здесь и была засада... Наверно во всех дистрибутивах Linux MySQL собирается с дефолтной кодировкой Latin1.
Системные переменные MySQL с дефолтной кодировкой:
- character set client: latin1
- character set connection: latin1
- character set database: latin1
- character set results: latin1
- character set server: latin1
- collation connection: latin1_swedish_ci
- collation database: latin1_swedish_ci
- collation server: latin1_swedish_ci
Вобщем полная... latin1.
Начал копать в документации на сайте www.mysql.com, много узнал нового, особо помогли комментарии пользователей. После суммирования всех полученных знаний, был выведен рецепт перевода базы с latin1 на cp1251 без пересборки пакета. Нужно править файл настроек /etc/mysql/my.cnf. В секции client и mysqld нужно внести дополнения. Привожу эти секции поностью:
После рестарта сервера изменились системные переменные:
- character set client: cp1251
- character set connection: cp1251
- character set database: cp1251
- character set results: cp1251
- character set server: cp1251
- collation connection: cp1251_general_ci
- collation database: cp1251_general_ci
- collation server: cp1251_general_ci
Теперь клиенты и сервера (k)ubuntu работают с базой правильно, т.е. в кодировке cp1251.
Оригинал статьи: http://klek.blogspot.com/2007/08/mysql-and-cp1251.html.