MySQL - кодировки

Аватар пользователя o3one

Нид хелп.

Ситуёвина: стоял IPB под виндами. Нужно ставить под ASPLinux 11.2. Базу сэкспортил, всё, вроде, норм. Но теперь так - старые посты отображаются нормально (хотя глючат некоторые заголовки), а новые - "????? ?? ??????????? ??"

Сам IPB пишет следующее:

character_set_client cp1251
character_set_connection latin1
character_set_database latin1
character_set_results cp1251
character_set_server cp1251
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/
collation_connection latin1_swedish_ci
collation_database latin1_swedish_ci
collation_server cp1251_general_ci

В ГУИ админки я подобных параметров. честно говоря, не нашёл. Есть только первый. А сам конфиг найти не могу (

В связи с этим у меня 2 вопроса и 1 просьба:

1) Исправится ли этот баг простой сменой кодировок на cp1251? Или надо тоньше подходить и глупо менять Юникод на винь?

2) Где лежит файл конфига Мускула в linux?

3) Не ругайтесь, плз, я в никсе человек новый, потому бывают нубские вопросы )

Спасибо!

Аватар пользователя IsakovAN

MySQL - кодировки

o3one писал(а):
Исправится ли этот баг простой сменой кодировок на cp1251? Или надо тоньше подходить и глупо менять Юникод на винь?

Маловероятно. Скорее всего проблема в вашем IPB. Поковыряйте конфиги.

o3one писал(а):
Где лежит файл конфига Мускула в linux?

/etc/mysql

Аватар пользователя o3one

Re: MySQL - кодировки

IsakovAN писал(а):
Маловероятно. Скорее всего проблема в вашем IPB. Поковыряйте конфиги

Но ведь до этого он работал на винде и проблем не было... сам форум целиком перенесён в точности. При просмотре полей самой базы через админку IPB все русские символы в старой базе отображаются без проблем. А вот новые мессы - "????"...

Аватар пользователя IsakovAN

Re: MySQL - кодировки

o3one писал(а):
Но ведь до этого он работал на винде и проблем не было... сам форум целиком перенесён в точности. При просмотре полей самой базы через админку IPB все русские символы в старой базе отображаются без проблем.

Т.е. с системной кодировкой все нормально. Она вообще сюда отеошения не имеет.

o3one писал(а):
А вот новые мессы - "????"...

Т.е. ваш IPB после переноса стал заносить сообщения в базу в другой кодировке! Обратите внимание, читает-то он правильно!

Аватар пользователя o3one

MySQL - кодировки

IsakovAN писал(а):
Т.е. ваш IPB после переноса стал заносить сообщения в базу в другой кодировке! Обратите внимание, читает-то он правильно!

Читает правильно только в админке почему-то... в самом форуме "???". Такое ощущение, что у меня в скриптах админки не прописана кодировка по дефолту, а в самом форуме - прописана... И стоит именно 1251. В самом же мускуле системная, естественно UTF-8. Её меняют только пересбором?

Аватар пользователя IsakovAN

MySQL - кодировки

o3one писал(а):
Читает правильно только в админке почему-то... в самом форуме "???". Такое ощущение, что у меня в скриптах админки не прописана кодировка по дефолту, а в самом форуме - прописана... И стоит именно 1251. В самом же мускуле системная, естественно UTF-8. Её меняют только пересбором?

Как я и предпологал - это не из-за мускула, а из-за движка.
Просто перенастройте его на UTF. Возможно прейдется переконвертить базу в UTF, но это довольно просто.

Аватар пользователя o3one

MySQL - кодировки

IsakovAN писал(а):
Как я и предпологал - это не из-за мускула, а из-за движка.
Просто перенастройте его на UTF. Возможно прейдется переконвертить базу в UTF, но это довольно просто.

Всё, спасибо. Проблема решилась ночью путём миграции базы с винды на АСП. И все кодировки встали на место. ;-)

Аватар пользователя antigrustin

MySQL - кодировки

Если кому не лень, осветить поглубже этот вопрос... и поправить меня если я в чемто заблуждаюсь.
Сам много мучался с этой проблемой.
Как я понимаю весь процес идет в несколько этапов:

При извлечении информации из БД:
1. Кодировка в которой храницца инфа в БД.
2. Кодировка которая используется при соединении сервера БД и клиентом. (как я понял т.н. сравнение БД)
3. Кодировка в которой выводится информация пользователю(например в браузере)

При добавлении информации в БД
1. Кодировка в которой отправляется информация в БД.
2. Кодировка которая используется при соединении сервера БД и клиентом. (как я понял т.н. сравнение БД)
3. Кодировка в которой храницца инфа в БД.

Следовательно, нужно ли соблюдать соответствие кодировок на всех этапах? Или СУБД умнее и делает все сама?
Извиняюсь если наговорил бредятины=)

RSS-материал