[mdk-re] Re: XML parser encodings

Sergey Vlasov =?iso-8859-1?q?vsu_=CE=C1_mivlgu=2Emurom=2Eru?=
Вт Ноя 13 20:49:26 MSK 2001


On Tue, 13 Nov 2001 19:50:16 +0200
Alexander Bokovoy <a.bokovoy на sam-solutions.net> wrote:

> On Wed, Nov 14, 2001 at 12:43:52AM +0800, Alexei Takaseev wrote:
> > On Tue, 13 Nov 2001, Mikhail Zabaluev wrote:
> > 
> > > Для тех libc, что не в танке, есть libiconv. Так что, думаю,
> > > предлагать можно настойчиво, особенно если предусмотреть
> > > aclocal-скрипт поиска реализации iconv, который можно стянуть из
> > > доброго десятка других пакетов. Лучший, по-моему, в mutt.
> > 
> > Да, кстати, а как сказать iconv, чтобы он не ругался на некоторые символы,
> > встречающиеся в текстах как "В данной кодировке таких символов нетути!" а
> > чтоб он его просто пропускал, и топал дальше текст жевать?
> Если речь идет об утилите командной строки, то ключик --replace=SYMBOL,
> если о функции, то смотрите исходники утилиты командной строки.

В эти исходники я заглядывал - лучше не смотреть, там все жестко
привязано к реализации iconv() в glibc (используются внутренние
структуры, даже не описанные в устанавливаемых файлах
заголовков). Оно и понятно - iconv --list вообще невозможно
реализовать стандартными средствами, не зависящими от реализации
iconv().

Лучше посмотреть на реализацию функции g_convert_with_fallback()
в GLib-1.3.x (pre-2.0) - там переносимая реализация. Основной
принцип - при ошибке преобразования исходная строка
преобразуется в UTF-8 (что должно пройти в любом случае), а
затем производится посимвольное преобразование из UTF-8 в
требуемую кодировку, с заменой символов, которые не удается
преобразовать.




Подробная информация о списке рассылки community