конвертер utf8 to cp1251
Модератор: /dev/random
-
- Сообщения: 7
конвертер utf8 to cp1251
Чем можно перекодировать файл кодировкой utf8 в cp1251
(iconv не предлагать)
(iconv не предлагать)
[ ~SuSE Linux 10.0 ]
[ ~Registered Linux User #320677 ]
[ ~Registered Linux User #320677 ]
-
- Бывший модератор
- Сообщения: 7390
- Статус: думающий о вечном
- ОС: Debian, LMDE
Re: конвертер utf8 to cp1251
Тема битая-перебитая. Уже и здесь обсуждалось.
konwert, recode, почти любой текстовый редактор и поиск по форуму.
konwert, recode, почти любой текстовый редактор и поиск по форуму.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
-
- Сообщения: 585
- Статус: Просто flook
Re: конвертер utf8 to cp1251
(ultrasparc @ Понедельник, 12 Сентября 2005, 10:53) писал(а):(iconv не предлагать)
А почему?
По делу: уже обсуждали тут это как-то

В каждом из нас спит гений... и с каждым днем все крепче...
-
- Бывший модератор
- Сообщения: 7390
- Статус: думающий о вечном
- ОС: Debian, LMDE
Re: конвертер utf8 to cp1251
Так это ведь там же обсуждали(flook @ Понедельник, 12 Сентября 2005, 10:59) писал(а):QUOTE(ultrasparc @ Понедельник, 12 Сентября 2005, 10:53)
(iconv не предлагать)
А почему?

¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
-
- Сообщения: 7
Re: конвертер utf8 to cp1251
поправка надо из latin1 сделать cp1251
а вобще нужно сделать следующее -
есть freeBSD 4.11 + mysql 4.1.14
там все базы лежат в latin1
надо их переделать в cp1251 - дамп базы делается в utf8 если утф перевести в сп1251 то там получается латин1, так вот этот латин надо еще раз в сп1251 переделать - а вобще я в этих кодировках запутался, может кто знает как базы переделать в сп1251
а вобще нужно сделать следующее -
есть freeBSD 4.11 + mysql 4.1.14
там все базы лежат в latin1
надо их переделать в cp1251 - дамп базы делается в utf8 если утф перевести в сп1251 то там получается латин1, так вот этот латин надо еще раз в сп1251 переделать - а вобще я в этих кодировках запутался, может кто знает как базы переделать в сп1251
[ ~SuSE Linux 10.0 ]
[ ~Registered Linux User #320677 ]
[ ~Registered Linux User #320677 ]
-
- Сообщения: 39
Re: конвертер utf8 to cp1251
Все iconv прекрасно держит, и юникод в том числе:
-bash-2.05b$ iconv -l | grep UTF
UTF-8
UTF-16
UTF-16BE
UTF-16LE
UTF-32
UTF-32BE
UTF-32LE
UNICODE-1-1-UTF-7 UTF-7 CSUNICODE11UTF7
-bash-2.05b$ pkg_info | grep iconv
iconv-2.0_3 Charset conversion library and utilities
libiconv-1.9.1_1 A character set conversion library
p5-Text-Iconv-1.2_1 Perl interface to iconv() codeset conversion function
А перекодировать базы можно так:
1. Экспортируем базу в дамп (с помощью mysqldump).
mysqldump -hmysql.server.tld -umysql_user -p db_name > dump.sql
2. Перекодируем содержимое базы данных в нужную кодировку с помощью iconv.
cat dump.sql | iconv -f UTF-8 -t cp1251 > dump-cp1251.sql
3. Импортируем дамп обратно в базу, предварительно удалив все таблицы.
mysql -hmysql.server.tld -umysql_user -p db_name < dump-cp1251.sql
(Вместо UTF-8 и cp1251 поставить нужное.)
-bash-2.05b$ iconv -l | grep UTF
UTF-8
UTF-16
UTF-16BE
UTF-16LE
UTF-32
UTF-32BE
UTF-32LE
UNICODE-1-1-UTF-7 UTF-7 CSUNICODE11UTF7
-bash-2.05b$ pkg_info | grep iconv
iconv-2.0_3 Charset conversion library and utilities
libiconv-1.9.1_1 A character set conversion library
p5-Text-Iconv-1.2_1 Perl interface to iconv() codeset conversion function
А перекодировать базы можно так:
1. Экспортируем базу в дамп (с помощью mysqldump).
mysqldump -hmysql.server.tld -umysql_user -p db_name > dump.sql
2. Перекодируем содержимое базы данных в нужную кодировку с помощью iconv.
cat dump.sql | iconv -f UTF-8 -t cp1251 > dump-cp1251.sql
3. Импортируем дамп обратно в базу, предварительно удалив все таблицы.
mysql -hmysql.server.tld -umysql_user -p db_name < dump-cp1251.sql
(Вместо UTF-8 и cp1251 поставить нужное.)
-
- Бывший модератор
- Сообщения: 7390
- Статус: думающий о вечном
- ОС: Debian, LMDE
Re: конвертер utf8 to cp1251
Это теоретически. Практически из юникода в восьмибитную кодировку перекодировать не получалось.(kolyan @ Понедельник, 12 Сентября 2005, 12:05) писал(а):Все iconv прекрасно держит, и юникод в том числе:
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
-
- Сообщения: 40
Re: конвертер utf8 to cp1251
Да? А у меня получалось. Правда, не iconv(1), а iconv(3), но сути дела это не меняет.
Правда, я на Solaris

HP i2000 Dual Itanium / Debian Sarge & Win2k3
Sun Ultra 5 M270 / OpenSolaris Nevada-41
DEC Multia VX42 / OpenBSD 3.8
HP 9000 Model C100 / HP-UX B.11.00
Sun Ultra 5 M270 / OpenSolaris Nevada-41
DEC Multia VX42 / OpenBSD 3.8
HP 9000 Model C100 / HP-UX B.11.00
-
- Сообщения: 585
- Статус: Просто flook
Re: конвертер utf8 to cp1251
Just to make things clear. Все понимают разницу между utf и unicode?
В каждом из нас спит гений... и с каждым днем все крепче...
-
- Бывший модератор
- Сообщения: 2521
- Статус: статус, статус, статус
Re: конвертер utf8 to cp1251
эм... а зачем такие манипуляции? хранится в utf8, ну и пусть хранится...
что в этом такого плохого?
и курим mysqldump --help
p.s.:
p.p.s.: utf8 -- кодировка
unicode -- набор чисел, грубо говоря
http://www.unicode.org/standard/translations/russian.html
что в этом такого плохого?
и курим mysqldump --help
p.s.:
Код: Выделить всё
$ echo привет | iconv -f utf8 -t koi8-r | iconv -f koi8-r -t utf8
привет
$ locale
LANG=ru_RU.UTF-8
LC_CTYPE="ru_RU.UTF-8"
LC_NUMERIC="ru_RU.UTF-8"
LC_TIME="ru_RU.UTF-8"
LC_COLLATE="ru_RU.UTF-8"
LC_MONETARY="ru_RU.UTF-8"
LC_MESSAGES="ru_RU.UTF-8"
LC_PAPER="ru_RU.UTF-8"
LC_NAME="ru_RU.UTF-8"
LC_ADDRESS="ru_RU.UTF-8"
LC_TELEPHONE="ru_RU.UTF-8"
LC_MEASUREMENT="ru_RU.UTF-8"
LC_IDENTIFICATION="ru_RU.UTF-8"
LC_ALL=
p.p.s.: utf8 -- кодировка
unicode -- набор чисел, грубо говоря
http://www.unicode.org/standard/translations/russian.html
-
- Бывший модератор
- Сообщения: 7390
- Статус: думающий о вечном
- ОС: Debian, LMDE
Re: конвертер utf8 to cp1251
Думаю, не все(flook @ Понедельник, 12 Сентября 2005, 15:44) писал(а):Just to make things clear. Все понимают разницу между utf и unicode?

¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
-
- Сообщения: 585
- Статус: Просто flook
Re: конвертер utf8 to cp1251
Ну тады слухайте сюда.
Unicode - строка из (вроде) 4хбайтовых симоволов. В 4 байта влазит (померяно) любой символ, использующийся любым народом нашей голубой планеты. Его приняли хз когда.
Виндоманы сразу сказали "у нас все теперь в юникоде" и переписали все (даже файловую систему) на нее. Проблема в том, что английские символы там кодируются так, что второй байт всегда 0. Поэтому стандартные линуксяче вызовы будут падать тутже: обработают первый байт и подумают, что конец све... пардон строки. Челы из Linux kernl team почесались и сказали "блин... это ж там признак конца строки не 0, а несколько 0 подряд, да и символ '/' поехал..." и выдумали utf. Utf это тоже многобайтовые символы, но там ВСЕГДА они ненулевые, за исключением конца строки, и символ '/' там выглядит так: 1й байт - код '/' 2й байт - что-то еще, неважно что. Таким образом ядро работает с UFT как с обычной ascii строкой.
Unicode - строка из (вроде) 4хбайтовых симоволов. В 4 байта влазит (померяно) любой символ, использующийся любым народом нашей голубой планеты. Его приняли хз когда.
Виндоманы сразу сказали "у нас все теперь в юникоде" и переписали все (даже файловую систему) на нее. Проблема в том, что английские символы там кодируются так, что второй байт всегда 0. Поэтому стандартные линуксяче вызовы будут падать тутже: обработают первый байт и подумают, что конец све... пардон строки. Челы из Linux kernl team почесались и сказали "блин... это ж там признак конца строки не 0, а несколько 0 подряд, да и символ '/' поехал..." и выдумали utf. Utf это тоже многобайтовые символы, но там ВСЕГДА они ненулевые, за исключением конца строки, и символ '/' там выглядит так: 1й байт - код '/' 2й байт - что-то еще, неважно что. Таким образом ядро работает с UFT как с обычной ascii строкой.
В каждом из нас спит гений... и с каждым днем все крепче...
-
- Бывший модератор
- Сообщения: 7390
- Статус: думающий о вечном
- ОС: Debian, LMDE
Re: конвертер utf8 to cp1251
А препинаки тоже нормально? Я помню только то, что при локали кои8-у (ну и кои8-р аналогично) тексты из ютф16 в ко8 иконвом не конвертились; а на что конкретно он ругался -- это я уже не помню.(IFL @ Понедельник, 12 Сентября 2005, 15:59) писал(а):$ echo привет | iconv -f utf8 -t koi8-r | iconv -f koi8-r -t utf8
привет
$ locale
LANG=ru_RU.UTF-8
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
-
- Бывший модератор
- Сообщения: 2521
- Статус: статус, статус, статус
Re: конвертер utf8 to cp1251
Код: Выделить всё
$ echo йцукенгшщзхъфывапролджэячсмитьбю1234567890-=\!@#$%^\&\(\)_+qwertyuiopasdfghjklzxcvbnm[{}]:\;\"\'\|\\\<,.\>/? | iconv -f utf8 -t koi8-r | iconv -f koi8-r -t utf8
йцукенгшщзхъфывапролджэячсмитьбю1234567890-=!@#$%^&()_+qwertyuiopasdfghjklzxcvbnm[{}]:;"'|\<,.>/?
№ есн-но не конвертится...
-
- Сообщения: 1030
- Статус: собирающий миры
- ОС: Debian
Re: конвертер utf8 to cp1251
потому что в koi8-r его нет
Код: Выделить всё
$ echo № | iconv -f utf8 -t cp1251 | iconv -f cp1251 -t utf8
№
Molchanov Alexander (aka Xor)
*offtopic* - ololo!
*offtopic* - ololo!
-
- Сообщения: 40
Re: конвертер utf8 to cp1251
(flook @ Понедельник, 12 Сентября 2005, 16:36) писал(а):...
. Челы из Linux kernl team почесались и сказали "блин... это ж там признак конца строки не 0, а несколько 0 подряд, да и символ '/' поехал..." и выдумали utf. Utf это тоже многобайтовые символы, но там ВСЕГДА они ненулевые, за исключением конца строки, и символ '/' там выглядит так: 1й байт - код '/' 2й байт - что-то еще, неважно что. Таким образом ядро работает с UFT как с обычной ascii строкой.
Маленькое уточнение:
1) то что Вы назвали Unicode, на самом деле называется UCS.
Unicode - это все многобайтовые кодировки, в том числе и UTF-8.
2) Символы первой половины ASCII в UTF-8 однобайтвые т.е. этот несчастный '/' - это просто '/' и никакого, даже ненулевого, 2-го байта. Прочие символы (кириллица, греческий алфавит etc)могут занимать 2 или 4 байта. Таким образом, строка в UTF-8, все символы которой латинские/цифры/знаки препинания/служебные - это просто ASCII-строка
3) Linux kernel не имеет к UTF-8 ни малейшего отношения. Эту кодировку разработал Кен Томпсон.
Cм.http://cm.bell-labs.com/sys/doc/utf.html
HP i2000 Dual Itanium / Debian Sarge & Win2k3
Sun Ultra 5 M270 / OpenSolaris Nevada-41
DEC Multia VX42 / OpenBSD 3.8
HP 9000 Model C100 / HP-UX B.11.00
Sun Ultra 5 M270 / OpenSolaris Nevada-41
DEC Multia VX42 / OpenBSD 3.8
HP 9000 Model C100 / HP-UX B.11.00
-
- Сообщения: 585
- Статус: Просто flook
Re: конвертер utf8 to cp1251
(Paul7 @ Вторник, 13 Сентября 2005, 10:48) писал(а):3) Linux kernel не имеет к UTF-8 ни малейшего отношения. Эту кодировку разработал Кен Томпсон.
Cм.http://cm.bell-labs.com/sys/doc/utf.html
1. Имеет. Иначе все ядро бы перепахали.
2. Ссылка битая :P
В каждом из нас спит гений... и с каждым днем все крепче...
-
- Бывший модератор
- Сообщения: 7390
- Статус: думающий о вечном
- ОС: Debian, LMDE
Re: конвертер utf8 to cp1251
Там просто лишнее http в начале.(flook @ Вторник, 13 Сентября 2005, 11:30) писал(а):2. Ссылка бита
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
-
- Сообщения: 40
Re: конвертер utf8 to cp1251
(flook @ Вторник, 13 Сентября 2005, 11:30) писал(а):(Paul7 @ Вторник, 13 Сентября 2005, 10:48) писал(а):3) Linux kernel не имеет к UTF-8 ни малейшего отношения. Эту кодировку разработал Кен Томпсон.
Cм.http://cm.bell-labs.com/sys/doc/utf.html
1. Имеет. Иначе все ядро бы перепахали.
2. Ссылка битая :P
1. И на каких же основаниях? (с) Так можно и разработку , например, языка С приписать Linux kernel team, потому что ядро написано на С.
2 Спасибо, исправил.
HP i2000 Dual Itanium / Debian Sarge & Win2k3
Sun Ultra 5 M270 / OpenSolaris Nevada-41
DEC Multia VX42 / OpenBSD 3.8
HP 9000 Model C100 / HP-UX B.11.00
Sun Ultra 5 M270 / OpenSolaris Nevada-41
DEC Multia VX42 / OpenBSD 3.8
HP 9000 Model C100 / HP-UX B.11.00
-
- Сообщения: 944
- ОС: windows xp, cruncheee, ddwrt
Re: конвертер utf8 to cp1251
Есть такая прога KPad, там есть функция преобразования кучи кодировок, в том числе и utf8>cp1251
ASUS eee pc 701 [windowsXP sp3] [Ubuntu linux]
wi-fi router d-link dir-400 [ddWRT v24 SP1 linux]
[sony psp 2008 slim wi-fi netBSD]
nas d-link dsm-600
Противник HAL NETWORKMANAGER и других подобных паделок!!!
wi-fi router d-link dir-400 [ddWRT v24 SP1 linux]
[sony psp 2008 slim wi-fi netBSD]
nas d-link dsm-600
Противник HAL NETWORKMANAGER и других подобных паделок!!!