Board.KolibriOS.org

Official KolibriOS board
It is currently Sun Dec 08, 2019 8:26 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 9 posts ] 
Author Message
PostPosted: Thu Aug 13, 2015 3:33 pm 
Offline
Designer
User avatar

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

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

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

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

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


Top
   
PostPosted: Thu Aug 13, 2015 6:38 pm 
Offline
User avatar

Joined: Mon Nov 19, 2012 5:22 pm
Posts: 457
Там код совсем неверный какой-то)
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-ти байтов бывает. Так что не все символы преобразовать сможет.

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


Top
   
PostPosted: Thu Aug 13, 2015 6:48 pm 
Offline
Kernel Developer
User avatar

Joined: Thu Sep 03, 2009 1:52 pm
Posts: 1621
GerdtR wrote:
А utf8 до 6-ти байтов бывает. Так что не все символы преобразовать сможет.

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

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


Top
   
PostPosted: Thu Aug 13, 2015 6:59 pm 
Offline
User avatar

Joined: Mon Nov 19, 2012 5:22 pm
Posts: 457
(6 байт) 1111 110x 10xx xxxx 10xx xxxx 10xx xxxx 10xx xxxx 10xx xxxx - 31 значащий бит
На выходе да, 4 байта, а на вход 6 байт получается.

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


Top
   
PostPosted: Thu Aug 13, 2015 7:04 pm 
Offline
User avatar

Joined: Mon Nov 19, 2012 5:22 pm
Posts: 457
Стоп. Кажется я затупил.

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


Top
   
PostPosted: Thu Aug 13, 2015 11:29 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5067
CleverMouse
Ты бы могла залить исправленную версию ICONV?
Т.к. в системе теперь есть отображение юникода, такая либа была бы очень полезна.

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


Top
   
PostPosted: Thu Aug 13, 2015 11:56 pm 
Offline
Mentor/Kernel Developer
User avatar

Joined: Fri Jun 30, 2006 9:01 am
Posts: 1248
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


Top
   
PostPosted: Fri Aug 14, 2015 3:08 pm 
Offline
Kernel Developer
User avatar

Joined: Thu Sep 03, 2009 1:52 pm
Posts: 1621
Leency, так у меня нет исправленной версии.

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


Top
   
PostPosted: Fri Aug 14, 2015 3:33 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5067
Выразился неправильно. Ты бы могла исправить проблему?

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

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


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 9 posts ] 

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited