Страница 1 из 1

Перекодировать cp1251 в koi8-r. Чем?

Добавлено: 05 авг 2006 18:58
loooser
Нужна какая-нибудь утилита, которая умеет cp1251 -> koi8-r с умным преобразованием кавычек-лапок и подобных символов. Т.е. либо в эквиваленты (> в "), либо в html-коды (> в »)
И надо чтобы из perl-проги можно было пользовать. Есть что-то подобное в природе?

Пока нашел только recode, но это не совсем то, т.к.:
recode -df cp1251..h1
делает из

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

«О противодействии
вот такое:

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

& #171;& #1054; & #1087;& #1088;& #1086;& #1090;& #1080;& #1074;& #1086;& #1076;& #1077;& #1081;& #1089;& #1090;& #1074;& #1080;& #1080;
А надо чтобы так каверкались только непреобразовываемые символы.

Перекодировать cp1251 в koi8-r. Чем?

Добавлено: 05 авг 2006 22:03
rayven
Сейчас линукса под рукой нет, но на вскидку приходит в голову iconv. Эта штука есть как в виде стандартной сишной (а значит и в перле она есть) функции из библиотеки glibc, кажется, так и в виде утилиты коммандной строки. В случае коммандной строки делаем так:

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

$ iconv -f CP1251 -t KOI8-R < input_file.txt > output_file.txt
У нее параметров целая куча, на сколько я помню. Поройся.

Перекодировать cp1251 в koi8-r. Чем?

Добавлено: 06 авг 2006 11:16
loooser
Насколько я знаю, iconv затыкается на символах, которые не может перекодировать. KOI8-R -> CP1251 запросто перекодирует, а вот обратно - затыкается на тех же кавычках (просто завершается). И насколько я слышал, это нельзя победить.

recode такие символы просто не перекодирует, оставляет как есть. Хотя есть у меня смутное подозрение, что можно его как-то заставить работать правильно...

Перекодировать cp1251 в koi8-r. Чем?

Добавлено: 06 авг 2006 14:52
hex
tr натрави на кавычки :)

Перекодировать cp1251 в koi8-r. Чем?

Добавлено: 06 авг 2006 15:40
loooser
hex: так этож надо составлять список всех подобных символов, а их довольно много. Если пропустить хоть символ, то потом это может вылезти в самый неподходящий момент... Да и лениво мне вручную их искать %=))

Перекодировать cp1251 в koi8-r. Чем?

Добавлено: 10 авг 2006 07:19
rpk
А у меня рекод почему-то все тексты хавает как подобается.... :/

Перекодировать cp1251 в koi8-r. Чем?

Добавлено: 12 авг 2006 15:25
loooser
rpk: хм, а какую команду даёшь?
И что значит "как полагается"? Если перекодируешь из win в koi, то что он делает с кавычками, длинными тире и с другими знаками типа "˚", "©", "®", "²", "¼", "÷", "§" ???

Перекодировать cp1251 в koi8-r. Чем?

Добавлено: 13 авг 2006 06:45
rpk
[quote="loooser"]rpk: хм, а какую команду даёшь?
И что значит "как полагается"? Если перекодируешь из win в koi, то что он делает с кавычками, длинными тире и с другими знаками типа "˚", "©", "®", "²", "¼", "÷", "§" ???[/quote]
Что делает непомню - под рукой щас нету. Точно помню что за всё время пользования никаких проблем не встречал - хотя, у меня редко что требовалось переводить помимо plain-text. Кавычки точно были на месте, тире тоже.

По памяти с винды: recode cp1251 file_name {-f по желанию}...

Перекодировать cp1251 в koi8-r. Чем?

Добавлено: 15 авг 2006 20:36
loooser
rpk: так лучше, но все-равно не подходит. Например, знак параграфа он превратил в "SS". Надо такое в html-коды переводить.