ICONV.obj: преобразование текста из одной кодировки в другую

Discussing libraries simplifying applications development
  • Там код совсем неверный какой-то)
    Spoiler:

    Code: Select all

        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-ти байтов бывает. Так что не все символы преобразовать сможет.
    Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
  • GerdtR wrote:А utf8 до 6-ти байтов бывает. Так что не все символы преобразовать сможет.
    Не бывает. Диапазон Unicode ограничен до 0x10FFFF, максимум 4 байта получается. Можно использовать https://tools.ietf.org/html/rfc3629 как авторитетный источник.
    Сделаем мир лучше!
  • (6 байт) 1111 110x 10xx xxxx 10xx xxxx 10xx xxxx 10xx xxxx 10xx xxxx - 31 значащий бит
    На выходе да, 4 байта, а на вход 6 байт получается.
    Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
  • Стоп. Кажется я затупил.
    Чем больше сыра, тем больше в нём дыр. Чем больше дыр, тем меньше в нём собственно сыра. Значит, чем больше сыра, тем меньше сыра!
  • CleverMouse
    Ты бы могла залить исправленную версию 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
    Из хаоса в космос
  • Преобразование из UTF-8 в другую кодировку работает хорошо, а вот из любой другой в UTF-8 - нет.
    Баг и ныне там, может кто-то глянет?

    Также автособранная версия не работает
    http://builds.kolibrios.org/rus/data/pr ... /iconv.obj
    Из хаоса в космос
  • Who is online

    Users browsing this forum: No registered users and 5 guests