Re: CP1251 to KOI8-R text conversion
On 2003.02.17 at 22:14:34 +0200, Andrei Sosnin wrote:
> Здравствуйте!
>
> У меня такая проблема: необходимо перевести документ в кодировке cp-1251
> или utf-8 в кодировку koi8-r. Обрыв результирующего текста недопустим,
> однако допустимыми являются либо потеря "запрещенных" символов (заменой
> вопросами, например), либо замена специальных символов в т.н. "entity"
> HTML/XML (например: §, или ä или è).
>
> *iconv* в простом режиме, как известно обрывает текст, с опцией -c
> результат иногда практически тот же, иногда - "проживает" до конца...
> (особенно, если в промежутке перекодировать cp1251 -> utf-8). Мне же
> необходим простой и *эффективный* метод...
>
> Существует ли в Дебиане программа, удовлетворяющая моим запросам? Если
> нет, то может ли кто-нибудь дать мне рекоммендации по тому, как мне
> написать соответствующую программку на С/С++ или Питоне? Именно: где
> можно найти таблицу символов Юникод с их кодами (которые можно
> использовать хотя бы в "энтити" вроде: ŗ)?
Примерно эту функциональность реализует catdoc. Правда, при обработке
не-вордовых файлов он отжирает первые 8 символов, а я все никак не
соберусь это пофиксить. Зато возможные замены описываются в текстовом
файлике.
Кроме того, стоит посмотреть на системы перекодировки, встроенные в perl
5.8 , tcl>= 8.1 или python 2.x.
Вообще, программа перекодировки с использованием C-шной функции iconv
(в отличие от утилиты iconv) которая корректно обрабатывает
отсутствующие в выходной кодирвоке символы, должна занять строчек 100 из
которых большая часть будет посвящена чтению файла подстановок и
построению эффективной структуры данных для поиска в нем.
На perl 5.8 мне удалось уложиться в экран. Думаю, что на python возможно
примерно то же самое.
--
Victor Wagner vitus@ice.ru
Chief Technical Officer Office:7-(095)-748-53-88
Communiware.Net Home: 7-(095)-135-46-61
http://www.communiware.net http://www.ice.ru/~vitus
Reply to: