URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 1916
[ Назад ]

Исходное сообщение
"Как сконвертировать базу mysql из KOI8-U в WINDOWS-1251?"

Отправлено shur , 25-Июл-03 16:08 
Доброго времени суток, мне нужно переконвертировать mysql-базу из KOI8-U в WINDOWS-1251, мне предложили сделать так: сделать дамп базы и утилой iconv сконвертить, но сделав
iconv -f KOI8-U -t WINDOWS-1251 -o data.win data.sql
вылазит ошибка:
iconv: illegal input sequence at position 26997
Может кто-нить предложит более корректное или просто рабочее решение проблемы, заранее спасибо.
PS у меня Линукс асп9, и огромная mysql-база

Содержание

Сообщения в этом обсуждении
"Как сконвертировать базу mysql из KOI8-U в WINDOWS-1251?"
Отправлено XMan , 25-Июл-03 20:52 
Незнаю как в MySQL, а в Postgresql имеется переменная окружения клиента "client_encoding". Ставишь там 'WIN' и он сам преобразует из базовой в клиентскую. Теоретически, такая же возможность должна быть и в MySQL.

"Как сконвертировать базу mysql из KOI8-U в WINDOWS-1251?"
Отправлено shur , 28-Июл-03 14:32 
>Незнаю как в MySQL, а в Postgresql имеется переменная окружения клиента "client_encoding".
>Ставишь там 'WIN' и он сам преобразует из базовой в клиентскую.
>Теоретически, такая же возможность должна быть и в MySQL.


а как эту переменную посмотреть и вообще проверить есть ли она и как изменить?


"Как сконвертировать базу mysql из KOI8-U в WINDOWS-1251?"
Отправлено rnl , 29-Июл-03 12:19 
может быть тут что-то будет полезным...
http://www.mysql.com/doc/en/Charset.html

"Как сконвертировать базу mysql из KOI8-U в WINDOWS-1251?"
Отправлено Kurt , 30-Июл-03 11:44 
выставляешь в настройках подключения ODBC драйвера "set CHARACTER SET cp1251_koi8"  и спишь спокойно без перекодирования


"Как сконвертировать базу mysql из KOI8-U в WINDOWS-1251?"
Отправлено shur , 31-Июл-03 13:55 
>выставляешь в настройках подключения ODBC драйвера "set CHARACTER SET cp1251_koi8"  и
>спишь спокойно без перекодирования


не могу найти где это надо делать, и как?


"Как сконвертировать базу mysql из KOI8-U в WINDOWS-1251?"
Отправлено konst , 31-Июл-03 15:37 
>>выставляешь в настройках подключения ODBC драйвера "set CHARACTER SET cp1251_koi8"  и
>>спишь спокойно без перекодирования
>
>
>не могу найти где это надо делать, и как?
Смысл в чем? Ведь в БД хранятся байты а не символы. Надо просто установить в конфиг.файлах кодировку в которой выводить данные и все... А если надо перекодировать текстовый файл - то iconv действительно часто выдают ошибки. Тогда просто пишешь скрипт:
#!/usr/bin/perl
# w2k
while(<>) {
    tr/koi8-r-символы/виндовые символы/;
    s/[\n\r]+/\r\n/;
    print;
}
#usage: w2k <input_file > outputfile
+ можно предварительно проверить встречаются ли "необычные" символы
cat file | grep -v "[A-Za-zЮ-Ъю-ъ0-9.,_etc]"



"Как сконвертировать базу mysql из KOI8-U в WINDOWS-1251?"
Отправлено shur , 01-Авг-03 12:45 
Спасибо, я уже понял, что mysql будет выдавать в кодировке, которая задана, и нету смысла ее конвертить.
Вот только где и что надо менять?

"Как сконвертировать базу mysql из KOI8-U в WINDOWS-1251?"
Отправлено shur , 01-Авг-03 13:44 
>Вот только где и что надо менять?

Вот нашел способ : надо mysqld пускать с параметром --default-character-set=charset



"Как сконвертировать базу mysql из KOI8-U в WINDOWS-1251?"
Отправлено shur , 04-Авг-03 15:19 
>>Вот только где и что надо менять?

Вот еще Lavr предложил, большое ему спасибо, работает.

После подключения к базе данных, но перед созданием и заполнением таблицы выполняем команду: mysql_query("set CHARACTER SET cp1251_koi8"); на пхп.



"Как сконвертировать базу mysql из KOI8-U в WINDOWS-1251?"
Отправлено Mack , 09-Авг-03 11:17 
>Доброго времени суток, мне нужно переконвертировать mysql-базу из KOI8-U в WINDOWS-1251, мне
>предложили сделать так: сделать дамп базы и утилой iconv сконвертить, но
>сделав
>iconv -f KOI8-U -t WINDOWS-1251 -o data.win data.sql
>вылазит ошибка:
>iconv: illegal input sequence at position 26997
>Может кто-нить предложит более корректное или просто рабочее решение проблемы, заранее спасибо.
>
>PS у меня Линукс асп9, и огромная mysql-база

стартуйте mysql с параметром:
/bin/sh /usr/local/bin/safe_mysqld --default-character-set=cp1251 &