[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: перекодировка



On Sun, 23 Jul 2000, Victor Wagner wrote:

> On Sun, 23 Jul 2000, Vlad Harchev wrote:
> 
> > 
> >  Да, там на этом месте байт 0x85 (по-моему) - это HORIZONTAL ELISPIS в
> > соотвествии с определением cp1251 заложенном в glibc, таковой символ отсутвует
> > в кодировка koi8-r, поэтому iconv не может его перевести и отказывается идти
> > дальше.
> >  Во-первых, я не думаю что этот символ в приложенном файле имеет какой-то
> > смысл - скорее глюк какой-то софтины (экспорта из экселя?).
> 
> Почему не имеет смысл? Многоточие оно вполне имеет смысл.

  Блин, это ж многоточие ... Тогда да, полезный символ.
  
> >  Во-вторых, было бы неплохо расширить возможности _утилиты_ iconv на предмет
> > поведения в случае невозможности перевода - типа либо останов, либо пропуск
> > символа, либо оставить как есть, либо замена чем-нить другим (типа пробела)
> > либо перевод в mnemonic unicode (типа <horizontal-elipsis> в нашем случае).
> 
> 
> Для большинства подобного рода символов существуют довольно приличные
> замены на комбинации из нескольких символов. 
> 
> В свое время, когда я писал catdoc версии 0.90 я там предусмотрел подобную
> ситуацию.
> 
> И в существующем дистрибутивном файле ascii.replchars horizontal ellipsis
> заменяется именно на "..."
> 
> Точнее, у меня там используется трехуровневая замена
> 1. Смотрим есть ли данный unicode символ в таблице specchars
>  (например "\" в случае если выходной формат TeX или "&" в случае HTML)
>  Если нашли, то выводим заменитель из данной таблицы и идем на следующий
>  unicode символ 
> 2. Пытаемся перекодировать в выходной charset. Если получилось, выводим
> то, что получилось
> 3. Если шаг 2 был безуспешный, ищем в таблице заменителей (а в ней есть
> много чего - корректная транслитерация всей кириллицы, отображение букв
> latin 1 на буквы с порезанными умляутами etc, причем для каждого выходного
> формата она своя, с учетом того, что те же TeX и HTML имеют специальные
> управляющие последовательности для многих интересных printablе символов.
> 4. Если и это не спасло, то в зависимости от режима выводим либо
> универсальный символ-заменитель (обычно "?") либо 16-ричный код данного
> Unicode-символа.
> 
> Но чтобы обламываться и выпадать с ошибкой...

  В принципе, наверное будет действительно лучше использовать такую
"очеловечивающую" перекодировку (типа horizontal elipsis -> ...)  - раньше я о
ней думать не хотел, а сейчас посмотрел таблицы с заменами от lynx'а
(в файлах src/chartrans/{rfc_suni.tbl,mnem_suni.tbl,mnem2_suni.tbl}) - они не
такие уж и большие килобайт 30 в бинарнике будут занимать - наверно дадут
maintainer'ы glibc их в утилиту iconv вставить.

>  --------------------------------------------------
> Victor Wagner			vitus@ice.ru
> Programmer			Office:7-(095)-785-09-72
> Institute for Commerce 		Home: 7-(095)-135-46-61
> Engineering                     http://www.ice.ru/~vitus
> 
> 
> --  
> To UNSUBSCRIBE, email to debian-russian-request@lists.debian.org
> with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
> 

 Best regards,
  -Vlad

Reply to: