mysqldump, русские символы.

bosh

Новичок
mysqldump, русские символы.

Имеется следующий тихий ужас, доставшийся по наследству.

Данные в базе данных находятся в cp1251. Хочется их оттуда вытащить.

mysqldump -u abash -p --default-character-set=cp1251 --skip-set-charset db_name
mysqldump -u abash -p --default-character-set=cp1251 db_name
Получаю такое:
INSERT INTO `catalog_metas` VALUES (2,1,1,'??????? ??????? ? ?????? ? ???????????','??????? ??????? ???????? ?????? ??????????
? ??????','??????? ??????? ? ?????? ? ??????? ???????????.','1h'),(3,1,4,'??????? ?????? ? ?????? ? ???????????',NULL,NULL,NUL
L);
по умолчанию:
mysqldump -u abash -p db_name
:>
INSERT INTO `catalog_metas` VALUES (2,1,1,'ÏðîäГ_Г¦Г_ ГЄГўГ_ðòèð Гў Ìîñêâå ГЁ Ïîäìîñêîâüå','ïîêóГ
ЇГЄГ_ ïðîäГ_Г¦Г_ ГЄГўГ_ðòèðГ_ ÌîñêâГ_ Ïîäìîñêîâüå ГЄГіГЇГЁГІГј','ÏðîäГ_Г¦Г_ ГЄГўГ_ðòèð Гў ГЊГ®
Г±ГЄГўГҐ ГЁ áëèæГ_ГҐГ¬ Ïîäìîñêîâüå.','1h'),(3,1,4,'ÏðîäГ_Г¦Г_ Г§Г¤Г_Г_ГЁГ© Гў Ìîñêâå ГЁ ÏîäìîñГ
ЄГ®ГўГјГҐ',NULL,NULL,NULL);

Что в целом конечно лучше, но не особенно.
Сама таблица

[SQL]
CREATE TABLE `links` (
`link_id` int(8) NOT NULL auto_increment,
`topic_id` int(8) default NULL,
`link_name` varchar(100) default NULL,
`link_html` text,
`comments` text,
PRIMARY KEY (`link_id`),
KEY `fk_links` (`topic_id`),
CONSTRAINT `fk_links` FOREIGN KEY (`topic_id`) REFERENCES `links_topics` (`topic_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
[/SQL]

Кодировки в базе в целом тоже не лучше:
show variables like 'char%';
+--------------------------+----------------------------------+
| Variable_name | Value |
+--------------------------+----------------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/share/mysql/charsets/ |
+--------------------------+----------------------------------+

Но я если честно боюсь что-либо менять, не забекапив данные.
Никто не скажет, что можно сделать помимо:
"написать на php mysqldump и делать что угодно" ? :)
 

vovanium

Новичок
У тебя таблица в latin1, вот и поставь latin1 в --default-character-set. А что касается по умолчанию так там данные в utf8, а ты смотришь их в каком-нибудь редакторе не поддерживающем utf.
 

bosh

Новичок
я их смотрю в putty.
В свойствах выставлял и utf8 и не utf8.

Окаалось решение довольно простым :) Сохранил данные в формате mysql4.0 который если мне не изменяет память ещё не понимал кто такой utf :)
 
Сверху