[mdk-re] Re: XML parser encodings
Mikhail Zabaluev
=?iso-8859-1?q?mhz_=CE=C1_alt-linux=2Eorg?=
Пт Ноя 16 12:27:13 MSK 2001
Hello Sergey,
On Thu, Nov 15, 2001 at 05:54:09PM +0300, Sergey Vlasov wrote:
>
> On Thu, 15 Nov 2001 02:59:00 +0300
> Mikhail Zabaluev <mhz на alt-linux.org> wrote:
>
> > > Лучше посмотреть на реализацию функции g_convert_with_fallback()
> > > в GLib-1.3.x (pre-2.0) - там переносимая реализация. Основной
> > > принцип - при ошибке преобразования исходная строка
> > > преобразуется в UTF-8 (что должно пройти в любом случае), а
> > > затем производится посимвольное преобразование из UTF-8 в
> > > требуемую кодировку, с заменой символов, которые не удается
> > > преобразовать.
> >
> > Сие грамотно, разве что так тщательно нужно перекодировать только то
> > место, где iconv спотыкается -- ведь функция сама двигает указатели,
> > пока все OK.
>
> В общем случае это не проходит - исходная кодировка может быть
> хитрой многобайтовой, поэтому пропустить мешающий символ сложно.
> В UTF-8 такой проблемы нет.
Тогда уж лучше в UCS-4, чтобы потом легко скакать по 32-битным словам.
Минимизировать работу по трехступенчатой схеме все же можно: сделать
lookahead на "сложном месте" байт в 6-8, чтобы любой известный науке
многобайтовый символ мог проскочить. А потом продолжить прямую
перекодировку с того места, где остановились указатели.
--
Stay tuned,
MhZ JID: mookid на jabber.org
___________
That government is best which governs least.
-- Henry David Thoreau, "Civil Disobedience"
Подробная информация о списке рассылки community