iconv — библиотека для преобразования текста из одной кодировки в другую. Написана на Си.
Путь на SVN: svn://kolibrios.org/programs/develop/libraries/iconv/
При работе с библиотекой столкнулся с проблемой.
Преобразование из UTF-8 в другую кодировку работает хорошо, а вот из любой другой UTF-8 - нет.
Можете в браузере открыть bash.im и убедиться, что вместо текста пустое место.
Кто-то может разобраться в чем дело? Нужно для браузера.
ICONV.obj: преобразование текста из одной кодировки в другую
-
Из хаоса в космос
Там код совсем неверный какой-то)
Пример: 0xD0B9(й) = 110 10000 10 111001; 10000 111001 -> 0x0439. r[1]=0x04; r[0]=0x39
Этот код точно не сделает то что надо.
И маленькое примечание: на вход в функцию идёт ucs4_t wc с нужными байтами. То есть максимум 4 байта. А utf8 до 6-ти байтов бывает. Так что не все символы преобразовать сможет.
Spoiler:
Code: Select all
case 2: r[1] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0xc0;
case 1: r[0] = wc;
Этот код точно не сделает то что надо.
И маленькое примечание: на вход в функцию идёт ucs4_t wc с нужными байтами. То есть максимум 4 байта. А utf8 до 6-ти байтов бывает. Так что не все символы преобразовать сможет.
Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
Не бывает. Диапазон Unicode ограничен до 0x10FFFF, максимум 4 байта получается. Можно использовать https://tools.ietf.org/html/rfc3629 как авторитетный источник.GerdtR wrote:А utf8 до 6-ти байтов бывает. Так что не все символы преобразовать сможет.
Сделаем мир лучше!
(6 байт) 1111 110x 10xx xxxx 10xx xxxx 10xx xxxx 10xx xxxx 10xx xxxx - 31 значащий бит
На выходе да, 4 байта, а на вход 6 байт получается.
На выходе да, 4 байта, а на вход 6 байт получается.
Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
Стоп. Кажется я затупил.
Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
CleverMouse
Ты бы могла залить исправленную версию ICONV?
Т.к. в системе теперь есть отображение юникода, такая либа была бы очень полезна.
Ты бы могла залить исправленную версию ICONV?
Т.к. в системе теперь есть отображение юникода, такая либа была бы очень полезна.
Из хаоса в космос
GerdtR The specification has changed over time, from 6 to 4 bytes maximum. This might be the reason of confusion.
"Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -- and a lot of courage -- to move in the opposite direction." Albert Einstein
Leency, так у меня нет исправленной версии.
Сделаем мир лучше!
Выразился неправильно. Ты бы могла исправить проблему?
Lev даже выкладывал ассемблерную версию viewtopic.php?f=46&t=1222&p=53708&hilit=iconv#p53708
Lev даже выкладывал ассемблерную версию viewtopic.php?f=46&t=1222&p=53708&hilit=iconv#p53708
Из хаоса в космос
Баг и ныне там, может кто-то глянет?Преобразование из UTF-8 в другую кодировку работает хорошо, а вот из любой другой в UTF-8 - нет.
Также автособранная версия не работает
http://builds.kolibrios.org/rus/data/pr ... /iconv.obj
Из хаоса в космос
Who is online
Users browsing this forum: No registered users and 2 guests