MySQL 4.1.20 и кодировочка

Вопросы программирования БД, их оптимизации, резервирования и восстановления данных.

Модераторы: Trinity admin`s, Free-lance moderator`s

Ответить
zilonis
Advanced member
Сообщения: 54
Зарегистрирован: 30 июн 2007, 12:12

MySQL 4.1.20 и кодировочка

Сообщение zilonis » 30 июн 2007, 12:50

Может поможет кто... Устал уже, месяц бьюсь в поиска решения и без результатно. Суть проблемы такова что данные в таблицах хранятся в кодировке cp1251 (помоему) сама БД и таблицы на данные момент имеют колашн utf8_general_ci вот данные выводятся в крякозяблях... колашн БД и таблиц менял на что только можно, непомогло. Конфиг мускула на текущий момент таков:
[mysqld]
#default-character-set = cp1251
#character_set_client = utf8_bin
#collation_server = utf8_general_ci
collation_server = utf8_unicode_ci
character_set_server = utf8
#init-connect = "set names cp1251"
#skip-character-set-client-handshake
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1

[mysql.server]
#default-character-set = cp1251
user=mysql
basedir=/var/lib

[mysqld_safe]
#default-character-set = cp1251
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
Серьезно народ, помогите а...

Непойму где копать... Одна идея которую считаю реальной это конвертнуть данные в правильную кодировку... хотя... Вот опишу еще ситуцию... Создаю БД сравниение utf8_general_ci Ставлю русскую CMS она пишет в БД данные, все работает, все отлично... Смотрю в БД phpmyadminом, данные в крякозяблях.... Но ведь выводятся то они в нужной кодировке!!! Хез че там твориться....

ahk
Advanced member
Сообщения: 50
Зарегистрирован: 11 мар 2004, 12:46
Откуда: VTC SPbU

Сообщение ahk » 01 июл 2007, 20:18

В интернете много информации на тему проблем с кодировками!
Например:
http://andyr.mrezha.ru/index.php?option ... &Itemid=47

Суть проблемы в том, что таблица/база создана в одной кодировке (например, UTF8), а данные в нее попадают в другой кодировке (например, в cp1251). PHPMyAdmin смотрит в кодировке таблицы и выводит скорее всего вопросики вместо русских букв.

Можете начать с mysqldump с указанием разных кодировок (utf8, cp1251, latin1). Нужно получить dump, в котором русский текст будет читаем!

Если добились этого, то дальше уже проще! Создаете базу в нужной кодировке (скорее всего Вам подойдет cp1251 по умолчанию), импортируете туда данные из дампа (не забыть сменить явно указанные неверные кодировки для таблиц и т.п.).

zilonis
Advanced member
Сообщения: 54
Зарегистрирован: 30 июн 2007, 12:12

Сообщение zilonis » 02 июл 2007, 21:10

Ага... так оно и есть.... при дампе в cp1251 получаем вопросики, при дампе в utf8 получаем абракадабру и только при дампе в latin1 получаем читабельные данные в нем... НО! строит ENGINE=MyISAM DEFAULT CHARSET=utf8;

Странно как то...

Буду игратся с заливкой в БД сечас...

ahk
Advanced member
Сообщения: 50
Зарегистрирован: 11 мар 2004, 12:46
Откуда: VTC SPbU

Сообщение ahk » 02 июл 2007, 22:22

Все ОК!

При коннекции latin1 Вы получили "хороший" дамп! Теперь определите какая реально там кодировка! Думаю, что cp1251! Сделайте копию этого дампа, поменяйте везде latin1 на cp1251 (если это действительно так), создайте базу в cp1251 и все будет ОК!

Лучше и коннекции настройте к базе в cp1251! Вот тогда и phpMyAdmin будет все правильно отображать и т.п.

zilonis
Advanced member
Сообщения: 54
Зарегистрирован: 30 июн 2007, 12:12

Сообщение zilonis » 02 июл 2007, 23:05

Я почти счастлив.... теперь еще денег нехватает для полного.... :D  Вообщем добился я что phpmyadmin показывает в читабельном виде данные!!! Супер!!! Счас еще поэксперементирую и отпишусь.... Спасибо огромное ahk, за то что поставил на правильный путь, здоровья, счасть любви....   :)  Блин, бился над проблемой с месяц...

zilonis
Advanced member
Сообщения: 54
Зарегистрирован: 30 июн 2007, 12:12

Сообщение zilonis » 03 июл 2007, 21:23

Вообщем все так как и описал ahk.  Сначала надо добиться читабельности дампа на предмет русского текста. В дампе сменить строки на нужную кодировку для таблиц. Создать таблицу в нужной кодировке и вообщем то все...

Спасибо еще раз ahk! Я месяц был в поисках решения... даже оупен.ру не помог.

Аватара пользователя
Гхост-цзы
Advanced member
Сообщения: 55
Зарегистрирован: 14 окт 2004, 18:32
Откуда: Тяньцзин

Сообщение Гхост-цзы » 07 июл 2007, 13:24

zilonis писал(а):Вообщем все так как и описал ahk.  Сначала надо добиться читабельности дампа на предмет русского текста. В дампе сменить строки на нужную кодировку для таблиц. Создать таблицу в нужной кодировке и вообщем то все....
всё можно было сделать гораздо проще; с чего ты решил, что у тебя была
сама БД и таблицы на данные момент имеют колашн utf8_general_ci
ты это проверял через show variables? по описанным симптомам коллейшн у тебя был latin1
и всё можно было исправить грамотной настройкой конфига -- вместо той анархии, что была выложена в первом сообщении, часть конфига, относящаяся к кодировкам должна была выглядеть так:
[client]
default-character-set=cp1251
.........................................
.........................................
.........................................

[mysqld]
default-character-set=cp1251
init-connect="set collation_database=utf8_general_ci"
.........................................
.........................................

впрочем сейчас это можно проверить, выполнив в консоли mysql команды
show variables like 'char%';
show variables like 'coll%';
тогда не будет сомнений относительно того, какой коллейшн у твоей БД и в какая кодировка является дефолтной для таблиц

zilonis
Advanced member
Сообщения: 54
Зарегистрирован: 30 июн 2007, 12:12

Сообщение zilonis » 07 июл 2007, 13:33

Конфиг, ковырял как только мог... ничего непомогло... и калашн к таблицам\БД выставлял...

ahk
Advanced member
Сообщения: 50
Зарегистрирован: 11 мар 2004, 12:46
Откуда: VTC SPbU

Сообщение ahk » 07 июл 2007, 21:02

В базе явно лежал cp1251, который был положен туда как latin1.
Не уверен, что настройками конфига удалось бы разумно работать с такой базой. Разве выставить latin1...

***

Мне кажется, что единственно верный путь это конвертация таких баз в правильную кодировку!

Отдельно отмечу, что многие хостеры делают дамп базы автоматически (вернее говоря, делают дампы панели управления хостингом). С неверно выставленной кодировкой можно нарваться на то, что в этом дампе либо вопросики, либо что-то, что уже не восстанавливается.

Слетит у хостера сервер и увы!-( Или пользователь снесет свой сайт целиком через панель управления и решит восстановиться из дампа. И получит проблем на полную катушку!-(

Ответить

Вернуться в «Серверы - ПО, Базы Данных и их использование»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 10 гостей