freebsd 6.0 mysql 5.1, кодировка стандартная (latin1)сделал бэкап
mysqldump xxx > backup.sqlдалее когда из коммандной строки mysql делаю
\. ./backup.sql
то русский текст пропадает напроч.
Êèíîñòóäèÿ èì. À.Ï.Äîâæåíêîю...Кто-нибудь решал данную проблему?
>freebsd 6.0 mysql 5.1, кодировка стандартная (latin1)И что вы хотели? latin1 это ни разу не кириллица.
>Кто-нибудь решал данную проблему?ага, в том числе и случай смешанных кодировок и восстановления из бэкапа. Готовое решение конечно можно дать, но желательно все-таки почитать для начала разделы доки мускула относящиеся к кодировкам, да и по самому mysqldump не помешает. Если структура таблиц не меняется, а данных много, то желательно почитать про select into outfile и load data infile
>>freebsd 6.0 mysql 5.1, кодировка стандартная (latin1)
>
>И что вы хотели? latin1 это ни разу не кириллица.
>>Кто-нибудь решал данную проблему?
>
>ага, в том числе и случай смешанных кодировок и восстановления из бэкапа.
>Готовое решение конечно можно дать, но желательно все-таки почитать для начала
>разделы доки мускула относящиеся к кодировкам, да и по самому mysqldump
>не помешает. Если структура таблиц не меняется, а данных много, то
>желательно почитать про select into outfile и load data infileЗнаю что latin1 не кириллица.
Меня вопрос интересует ,можно ли восстановить данные, которые были испорчены такими действиями. (кодировка по-умолчанию, mysqldump > data.sql ; mysql < data.sql)
Ну кто же так делает, хотя бы rename table сделали или на дубликате базы экспериментировали.Зависит от того как данные писались в базу(set names, причем как изначально, так и в момент mysql < data.sql) и типа полей(varchar или binary). Скорее всего вам поможет или iconv или правильно выставленные тип поля, кодировка и set names. Подбирать параметры можно либо наугад, либо логически высчитать всю последовательность перекодировок
для примера рассмотрим самый простой вариант. Поле varchar в latin1, \s показывает latin1 во всех позициях и именно в таком варианте данные вводились в базу и являлись просматриваемыми. Локаль у вас однобайтная. mysqldump без лишних опций пишет в юникоде. Значит вам надо использовать "iconv -f utf8 -t latin1" на файл дампа.
>для примера рассмотрим самый простой вариант. Поле varchar в latin1, \s показывает
>latin1 во всех позициях и именно в таком варианте данные вводились
>в базу и являлись просматриваемыми. Локаль у вас однобайтная. mysqldump
>без лишних опций пишет в юникоде. Значит вам надо использовать "iconv
>-f utf8 -t latin1" на файл дампа.Спасибо за совет.