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 [EMAIL PROTECTED] 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

