Все это нормально работало до момента установки 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
Начал копать в документации на сайте www.mysql.com, много узнал нового, особо помогли комментарии пользователей. После суммирования всех полученных знаний, был выведен рецепт перевода базы с latin1 на cp1251 без пересборки пакета. Нужно править файл настроек /etc/mysql/my.cnf. В секции client и mysqld нужно внести дополнения. Привожу эти секции поностью:
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
default-character-set = cp1251
[mysqld]
#
# * Basic Settings
#
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
language = /usr/share/mysql/english
skip-external-locking
default-character-set = cp1251
character_set_server = cp1251
collation_server = cp1251_general_ci
skip-character-set-client-handshake
После рестарта сервера изменились системные переменные:
- 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
8 комментариев:
Тока на cp1251 свет клином не сошелся....
и это неправильная кодировка....
самая правильная utf-8
Согласен, но по необходимости, мне приходится работать с cp1251.
Премного благодарен, второй день искал решение этой проблемы, Ваш совет помог...
Связка Ubuntu + Apache + ColdFusion + MySQL.
Из бэкапа через phpMyAdmin встало все нормально. Развернутый ColdFusion никаких настроек кодировки не предложил, мои *.cfm-скрипты были написаны в utf-8, соответственно базу тоже сконвертил в utf-8 через MySQL Query Browser. Но первый же тест показал, шо це бэз бубна не пашет.
Причем (!) при втыкании INSERT-а ручками из MySQL Query Browser кириллица отлично кушалась.
Перекопал все конфиги, в первую очередь CF, добрался даже до Апачевских - везде utf-8. А оно вон оно как!
Между прочим, если вам когда-нибудь потребуется заблокировать какой-либо сотовый телефон или другое средство связи, то воспользуйтесь для этого Блокираторы мобильных.
Очень дельная статья.
Большое спасибо мне очень помогло при настройки грабера были проблеммы.
Отлично. Большое спасибо. Кратко лаконично. И главное все работает.
Отлично. Большое спасибо. Кратко лаконично. И главное все работает.
СПАСИБИЩЕ!!!
Очень помогло, долго бился с БД не мог понять в чем дело. =)
Отправить комментарий