Главная страница


ru.linux

 
 - RU.LINUX ---------------------------------------------------------------------
 From : Victor Wagner                        2:5020/400     23 Mar 2004  10:55:52
 To : Kirill Frolov
 Subject : Re: book reader
 -------------------------------------------------------------------------------- 
 
 Kirill Frolov <Kirill.Frolov@p2.f827.n5030.z2.fidonet.org> wrote:
 
  KF> Hемедленно нажми на RESET, Victor Wagner!
 
  VW>> В catdoc принцип другой. Преобразуем СИМВОЛ в юникод, смотрим, не
  VW>> является ли он специальным для выходного формата, если нет, пытаемся
  VW>> преобразовать в выходную кодировку, если не получилось, ищем заменяющую
  VW>> последовательность.
  VW>> В результате на каждый СИМВОЛ придется звать функцию iconv,
  VW>> предназначенную для обработки СТРОК и имеющую соответствующий оверхед,
  VW>> ДВАЖДЫ.
 
  KF>   Чего?  Вначале В ЮHИКОДЕ заменяешь неугодные символы на правильные,
 
 Чего-чего. Во первых, на входе у нас не юникод, а какая-то гадость вроде
 rtf, парсер который добывает символы по одной штуке, причём эти символы
 могут бы как юникодными, так и в более другой кодировке. Те из них,
 которые не юникодные мы должны преобразовать в юникод. Вот тебе первый
 вызов iconv на символ. 
  
 Потом мы должны определить, угодный символ или неугодный. 
 Есть два класса неугодных символов. Первый - это честные ASCII символы,
 недопустимые в выходном формате, например \ в TeX или  <> в HTML.
 С ними действительно можно и нужно поступать так как предлагаешь ты. Hо
 их мало.
 
 Второй класс неугодных символов - символы, непредставимые в выходной
 кодировке. Единственный способ их отличить - посмотреть в табличку
 выходной кодировки. Если у нас нет таблички, отличной от iconv-овской,
 значит надо попытаться эти символы преобразовать, и если не получилось,
 то тогда они неугодные.
 
  KF> потом iconv() его в выходную кодировку. Таблички нужны... но не
  KF> перекодировки, а только определяющие допустимые символы. И их можно
  KF> автоматически построить из iconv() при старте программы.
 
 Ты знаешь, распарсить 256 строк текстового файла может оказаться проще,
 чем проверять все 65536 кодов Unicode при построении таблички средствами
 iconv. Потому как строка файла описания кодировки с ftp.unicode.org
 занимает меньше 256 символов.
 
 Тем более что всё равно надо парсить сходные по структуре таблицы замен
 неугодных символов.
 
 В принципе, с помощью iconv можно построить более эффективный алгоритм,
 преобразуя символы пачками до первого облома. Поскольку известно, что
 если человек собрался преобразовывать файл в кодировку X, значит большая
 часть символов, содержащихся в файле, в этой кодировке представима.
 
 И преобразовывать прямо из входной в выходную.
 
 Hо при этом сильно осложняется определение символов, недопустимых в
 выходном формате по ограничениям формата, а не кодировки. И алгоритм
 сильно теряет в эффективности если во входном формате символы подлежащие
 преобразованию в основном представелены в виде esc-последовательностей, как в
 rtf.
  VW>> А что касается табличек, то пофигу, хранятся они в so-шке или в
  VW>> текстовом файле, поскольку считывание производится один раз за запуск
  VW>> программы.
 
  KF>   В info написано, что в iconv не таблицы, а вроде как функция на каждый
  KF> символ. Hо я не вникал особо. А почему-бы этих функций не расширить до
  KF> того, чтобы оно умело заменять символы отсутствующие в выходной
  KF> кодировке?
 
 А потому что существует стандарт  POSIX. Все, проехали. Где ты был,
 когда принимали POSIX-ные стандарты на функции i18n. Там ведь такого
 наворотили. 
 
 -- 
 Америка - нация, основанная людьми, выгнанными из Британии за ханжество
 --- ifmail v.2.15dev5.3
  * Origin: Free Net of Leninsky,45 (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Re: book reader   Victor Wagner   23 Mar 2004 10:55:52 
 Re: book reader   Valentin Nechayev   23 Mar 2004 19:43:14 
 Re: book reader   Victor Wagner   23 Mar 2004 21:12:09 
 Re: book reader   Valentin Nechayev   28 Mar 2004 19:03:56 
Архивное /ru.linux/15178ac1c7a73.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional