Доброго времени суток, мне нужно переконвертировать 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, а в Postgresql имеется переменная окружения клиента "client_encoding". Ставишь там 'WIN' и он сам преобразует из базовой в клиентскую. Теоретически, такая же возможность должна быть и в MySQL.
>Незнаю как в MySQL, а в Postgresql имеется переменная окружения клиента "client_encoding".
>Ставишь там 'WIN' и он сам преобразует из базовой в клиентскую.
>Теоретически, такая же возможность должна быть и в MySQL.
а как эту переменную посмотреть и вообще проверить есть ли она и как изменить?
может быть тут что-то будет полезным...
http://www.mysql.com/doc/en/Charset.html
выставляешь в настройках подключения ODBC драйвера "set CHARACTER SET cp1251_koi8" и спишь спокойно без перекодирования
>выставляешь в настройках подключения ODBC драйвера "set CHARACTER SET cp1251_koi8" и
>спишь спокойно без перекодирования
не могу найти где это надо делать, и как?
>>выставляешь в настройках подключения 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 будет выдавать в кодировке, которая задана, и нету смысла ее конвертить.
Вот только где и что надо менять?
>Вот только где и что надо менять?Вот нашел способ : надо mysqld пускать с параметром --default-character-set=charset
>>Вот только где и что надо менять?Вот еще Lavr предложил, большое ему спасибо, работает.
После подключения к базе данных, но перед созданием и заполнением таблицы выполняем команду: mysql_query("set CHARACTER SET cp1251_koi8"); на пхп.
>Доброго времени суток, мне нужно переконвертировать 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 &