Board.KolibriOS.org
http://board.kolibrios.org/

ICONV.obj: преобразование текста из одной кодировки в другую
http://board.kolibrios.org/viewtopic.php?f=24&t=3108
Page 1 of 1

Author:  Leency [ Thu Aug 13, 2015 3:33 pm ]
Post subject:  ICONV.obj: преобразование текста из одной кодировки в другую

iconv — библиотека для преобразования текста из одной кодировки в другую. Написана на Си.
Путь на SVN: svn://kolibrios.org/programs/develop/libraries/iconv/

При работе с библиотекой столкнулся с проблемой.

Преобразование из UTF-8 в другую кодировку работает хорошо, а вот из любой другой UTF-8 - нет.
Можете в браузере открыть bash.im и убедиться, что вместо текста пустое место.

Кто-то может разобраться в чем дело? Нужно для браузера.

Author:  GerdtR [ Thu Aug 13, 2015 6:38 pm ]
Post subject:  Re: ICONV.obj: преобразование текста из одной кодировки в др

Там код совсем неверный какой-то)
Spoiler: Show
Code:
    case 2: r[1] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0xc0;
    case 1: r[0] = wc;

Пример: 0xD0B9(й) = 110 10000 10 111001; 10000 111001 -> 0x0439. r[1]=0x04; r[0]=0x39
Этот код точно не сделает то что надо.
И маленькое примечание: на вход в функцию идёт ucs4_t wc с нужными байтами. То есть максимум 4 байта. А utf8 до 6-ти байтов бывает. Так что не все символы преобразовать сможет.

Author:  CleverMouse [ Thu Aug 13, 2015 6:48 pm ]
Post subject:  Re: ICONV.obj: преобразование текста из одной кодировки в др

GerdtR wrote:
А utf8 до 6-ти байтов бывает. Так что не все символы преобразовать сможет.

Не бывает. Диапазон Unicode ограничен до 0x10FFFF, максимум 4 байта получается. Можно использовать https://tools.ietf.org/html/rfc3629 как авторитетный источник.

Author:  GerdtR [ Thu Aug 13, 2015 6:59 pm ]
Post subject:  Re: ICONV.obj: преобразование текста из одной кодировки в др

(6 байт) 1111 110x 10xx xxxx 10xx xxxx 10xx xxxx 10xx xxxx 10xx xxxx - 31 значащий бит
На выходе да, 4 байта, а на вход 6 байт получается.

Author:  GerdtR [ Thu Aug 13, 2015 7:04 pm ]
Post subject:  Re: ICONV.obj: преобразование текста из одной кодировки в др

Стоп. Кажется я затупил.

Author:  Leency [ Thu Aug 13, 2015 11:29 pm ]
Post subject:  Re: ICONV.obj: преобразование текста из одной кодировки в др

CleverMouse
Ты бы могла залить исправленную версию ICONV?
Т.к. в системе теперь есть отображение юникода, такая либа была бы очень полезна.

Author:  hidnplayr [ Thu Aug 13, 2015 11:56 pm ]
Post subject:  Re: ICONV.obj: преобразование текста из одной кодировки в др

GerdtR The specification has changed over time, from 6 to 4 bytes maximum. This might be the reason of confusion.

Author:  CleverMouse [ Fri Aug 14, 2015 3:08 pm ]
Post subject:  Re: ICONV.obj: преобразование текста из одной кодировки в др

Leency, так у меня нет исправленной версии.

Author:  Leency [ Fri Aug 14, 2015 3:33 pm ]
Post subject:  Re: ICONV.obj: преобразование текста из одной кодировки в др

Выразился неправильно. Ты бы могла исправить проблему?

Lev даже выкладывал ассемблерную версию viewtopic.php?f=46&t=1222&p=53708&hilit=iconv#p53708

Page 1 of 1 All times are UTC+03:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/