Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Чт май 25, 2017 5:21 pm

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 9 сообщений ] 
Автор Сообщение
СообщениеДобавлено: Чт авг 13, 2015 3:33 pm 
Не в сети
Designer
Аватара пользователя

Зарегистрирован: Чт янв 25, 2007 3:33 pm
Сообщения: 4080
iconv — библиотека для преобразования текста из одной кодировки в другую. Написана на Си.
Путь на SVN: svn://kolibrios.org/programs/develop/libraries/iconv/

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

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

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

_________________
Через тернии к звездам


Вернуться к началу
СообщениеДобавлено: Чт авг 13, 2015 6:38 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн ноя 19, 2012 5:22 pm
Сообщения: 429
Там код совсем неверный какой-то)
Спойлер: Показать
Код:
    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-ти байтов бывает. Так что не все символы преобразовать сможет.

_________________
Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!


Вернуться к началу
СообщениеДобавлено: Чт авг 13, 2015 6:48 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Чт сен 03, 2009 1:52 pm
Сообщения: 1592
GerdtR писал(а):
А utf8 до 6-ти байтов бывает. Так что не все символы преобразовать сможет.

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

_________________
Сделаем мир лучше!


Вернуться к началу
СообщениеДобавлено: Чт авг 13, 2015 6:59 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн ноя 19, 2012 5:22 pm
Сообщения: 429
(6 байт) 1111 110x 10xx xxxx 10xx xxxx 10xx xxxx 10xx xxxx 10xx xxxx - 31 значащий бит
На выходе да, 4 байта, а на вход 6 байт получается.

_________________
Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!


Вернуться к началу
СообщениеДобавлено: Чт авг 13, 2015 7:04 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн ноя 19, 2012 5:22 pm
Сообщения: 429
Стоп. Кажется я затупил.

_________________
Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!


Вернуться к началу
СообщениеДобавлено: Чт авг 13, 2015 11:29 pm 
Не в сети
Designer
Аватара пользователя

Зарегистрирован: Чт янв 25, 2007 3:33 pm
Сообщения: 4080
CleverMouse
Ты бы могла залить исправленную версию ICONV?
Т.к. в системе теперь есть отображение юникода, такая либа была бы очень полезна.

_________________
Через тернии к звездам


Вернуться к началу
СообщениеДобавлено: Чт авг 13, 2015 11:56 pm 
Не в сети
Mentor/Kernel Developer
Аватара пользователя

Зарегистрирован: Пт июн 30, 2006 9:01 am
Сообщения: 1204
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


Вернуться к началу
СообщениеДобавлено: Пт авг 14, 2015 3:08 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Чт сен 03, 2009 1:52 pm
Сообщения: 1592
Leency, так у меня нет исправленной версии.

_________________
Сделаем мир лучше!


Вернуться к началу
СообщениеДобавлено: Пт авг 14, 2015 3:33 pm 
Не в сети
Designer
Аватара пользователя

Зарегистрирован: Чт янв 25, 2007 3:33 pm
Сообщения: 4080
Выразился неправильно. Ты бы могла исправить проблему?

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

_________________
Через тернии к звездам


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 9 сообщений ] 

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB