конвертер utf8 to cp1251

Софт под Linux, разные программы, но только связанные с Linux

Модератор: /dev/random

ultrasparc
Сообщения: 7

конвертер utf8 to cp1251

Сообщение ultrasparc »

Чем можно перекодировать файл кодировкой utf8 в cp1251
(iconv не предлагать)
[ ~SuSE Linux 10.0 ]
[ ~Registered Linux User #320677 ]
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: конвертер utf8 to cp1251

Сообщение t.t »

Тема битая-перебитая. Уже и здесь обсуждалось.
konwert, recode, почти любой текстовый редактор и поиск по форуму.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
flook
Сообщения: 585
Статус: Просто flook

Re: конвертер utf8 to cp1251

Сообщение flook »

(ultrasparc @ Понедельник, 12 Сентября 2005, 10:53) писал(а):(iconv не предлагать)

А почему?

По делу: уже обсуждали тут это как-то :) Кто-то даже самопальные предлагал.
В каждом из нас спит гений... и с каждым днем все крепче...
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: конвертер utf8 to cp1251

Сообщение t.t »

(flook @ Понедельник, 12 Сентября 2005, 10:59) писал(а):QUOTE(ultrasparc @ Понедельник, 12 Сентября 2005, 10:53)
(iconv не предлагать)

А почему?
Так это ведь там же обсуждали :) Он с юникодом не дружит.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
ultrasparc
Сообщения: 7

Re: конвертер utf8 to cp1251

Сообщение ultrasparc »

поправка надо из latin1 сделать cp1251
а вобще нужно сделать следующее -
есть freeBSD 4.11 + mysql 4.1.14
там все базы лежат в latin1
надо их переделать в cp1251 - дамп базы делается в utf8 если утф перевести в сп1251 то там получается латин1, так вот этот латин надо еще раз в сп1251 переделать - а вобще я в этих кодировках запутался, может кто знает как базы переделать в сп1251
[ ~SuSE Linux 10.0 ]
[ ~Registered Linux User #320677 ]
Спасибо сказали:
Аватара пользователя
kolyan
Сообщения: 39

Re: конвертер utf8 to cp1251

Сообщение kolyan »

Все 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 поставить нужное.)
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: конвертер utf8 to cp1251

Сообщение t.t »

(kolyan @ Понедельник, 12 Сентября 2005, 12:05) писал(а):Все iconv прекрасно держит, и юникод в том числе:
Это теоретически. Практически из юникода в восьмибитную кодировку перекодировать не получалось.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
Paul7
Сообщения: 40

Re: конвертер utf8 to cp1251

Сообщение Paul7 »

(t.t @ Понедельник, 12 Сентября 2005, 12:10) писал(а):
(kolyan @ Понедельник, 12 Сентября 2005, 12:05) писал(а):Все iconv прекрасно держит, и юникод в том числе:
Это теоретически. Практически из юникода в восьмибитную кодировку перекодировать не получалось.


Да? А у меня получалось. Правда, не 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
Спасибо сказали:
Аватара пользователя
flook
Сообщения: 585
Статус: Просто flook

Re: конвертер utf8 to cp1251

Сообщение flook »

Just to make things clear. Все понимают разницу между utf и unicode?
В каждом из нас спит гений... и с каждым днем все крепче...
Спасибо сказали:
Аватара пользователя
KiWi
Бывший модератор
Сообщения: 2521
Статус: статус, статус, статус

Re: конвертер utf8 to cp1251

Сообщение KiWi »

эм... а зачем такие манипуляции? хранится в utf8, ну и пусть хранится...
что в этом такого плохого?

и курим 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
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: конвертер utf8 to cp1251

Сообщение t.t »

(flook @ Понедельник, 12 Сентября 2005, 15:44) писал(а):Just to make things clear. Все понимают разницу между utf и unicode?
Думаю, не все :) Т.к. я и сам её не понимаю.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
flook
Сообщения: 585
Статус: Просто flook

Re: конвертер utf8 to cp1251

Сообщение flook »

Ну тады слухайте сюда.
Unicode - строка из (вроде) 4хбайтовых симоволов. В 4 байта влазит (померяно) любой символ, использующийся любым народом нашей голубой планеты. Его приняли хз когда.
Виндоманы сразу сказали "у нас все теперь в юникоде" и переписали все (даже файловую систему) на нее. Проблема в том, что английские символы там кодируются так, что второй байт всегда 0. Поэтому стандартные линуксяче вызовы будут падать тутже: обработают первый байт и подумают, что конец све... пардон строки. Челы из Linux kernl team почесались и сказали "блин... это ж там признак конца строки не 0, а несколько 0 подряд, да и символ '/' поехал..." и выдумали utf. Utf это тоже многобайтовые символы, но там ВСЕГДА они ненулевые, за исключением конца строки, и символ '/' там выглядит так: 1й байт - код '/' 2й байт - что-то еще, неважно что. Таким образом ядро работает с UFT как с обычной ascii строкой.
В каждом из нас спит гений... и с каждым днем все крепче...
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: конвертер utf8 to cp1251

Сообщение t.t »

(IFL @ Понедельник, 12 Сентября 2005, 15:59) писал(а):$ echo привет | iconv -f utf8 -t koi8-r | iconv -f koi8-r -t utf8
привет
$ locale
LANG=ru_RU.UTF-8
А препинаки тоже нормально? Я помню только то, что при локали кои8-у (ну и кои8-р аналогично) тексты из ютф16 в ко8 иконвом не конвертились; а на что конкретно он ругался -- это я уже не помню.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
KiWi
Бывший модератор
Сообщения: 2521
Статус: статус, статус, статус

Re: конвертер utf8 to cp1251

Сообщение KiWi »

Код: Выделить всё

$ echo йцукенгшщзхъфывапролджэячсмитьбю1234567890-=\!@#$%^\&\(\)_+qwertyuiopasdfghjklzxcvbnm[{}]:\;\"\'\|\\\<,.\>/? | iconv -f utf8 -t koi8-r | iconv -f koi8-r -t utf8
йцукенгшщзхъфывапролджэячсмитьбю1234567890-=!@#$%^&()_+qwertyuiopasdfghjklzxcvbnm[{}]:;"'|\<,.>/?

№ есн-но не конвертится...
Спасибо сказали:
Аватара пользователя
xorader
Сообщения: 1030
Статус: собирающий миры
ОС: Debian

Re: конвертер utf8 to cp1251

Сообщение xorader »

потому что в koi8-r его нет

Код: Выделить всё

$ echo № | iconv -f utf8 -t cp1251 | iconv -f cp1251 -t utf8
№
Molchanov Alexander (aka Xor)
*offtopic* - ololo!
Спасибо сказали:
Аватара пользователя
Paul7
Сообщения: 40

Re: конвертер utf8 to cp1251

Сообщение Paul7 »

(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
Спасибо сказали:
Аватара пользователя
flook
Сообщения: 585
Статус: Просто flook

Re: конвертер utf8 to cp1251

Сообщение flook »

(Paul7 @ Вторник, 13 Сентября 2005, 10:48) писал(а):3) Linux kernel не имеет к UTF-8 ни малейшего отношения. Эту кодировку разработал Кен Томпсон.

Cм.http://cm.bell-labs.com/sys/doc/utf.html


1. Имеет. Иначе все ядро бы перепахали.
2. Ссылка битая :P
В каждом из нас спит гений... и с каждым днем все крепче...
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: конвертер utf8 to cp1251

Сообщение t.t »

(flook @ Вторник, 13 Сентября 2005, 11:30) писал(а):2. Ссылка бита
Там просто лишнее http в начале.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
Paul7
Сообщения: 40

Re: конвертер utf8 to cp1251

Сообщение Paul7 »

(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
Спасибо сказали:
Аватара пользователя
Данил
Сообщения: 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 и других подобных паделок!!!
Спасибо сказали: