[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