UTF-8 в Win1251

РадостныйВизг
Дата: 25.09.2017 10:57:05
Здравствуйте, как я понимаю для этой конвертации необходима таблица соответствия элементов. Хранится ли в системе Windows эта таблица отдельно или она реализуется с только помощью кода и хранится в библиотеках?
Dima T
Дата: 25.09.2017 12:50:12
Можно с помощью WinAPI через промежуточную перекодировку в UTF-16
MultiByteToWideChar()
WideCharToMultiByte()
badikprg
Дата: 25.09.2017 12:54:57
//utf8 to 1251 converter (1 byte format, RU/EN support only + any other symbols) by drgluck
function utf8_decode (aa) {
    var bb = '', c = 0;
    for (var i = 0; i < aa.length; i++) {
        c = aa.charCodeAt(i);
        if (c > 127) {
            if (c > 1024) {
                if (c == 1025) {
                    c = 1016;
                } else if (c == 1105) {
                    c = 1032;
                }
                bb += String.fromCharCode(c - 848);
            }
        } else {
            bb += aa.charAt(i);
        }
    }
    return bb;
Малыхин Сергей
Дата: 27.09.2017 17:05:41
В исходниках alkepad были хорошо оптимизированные функции конвертации в различные кодировки. Всяко лучше костылей из интернета.
schi
Дата: 27.09.2017 22:19:04
РадостныйВизг
Здравствуйте, как я понимаю для этой конвертации необходима таблица соответствия элементов. Хранится ли в системе Windows эта таблица отдельно или она реализуется с только помощью кода и хранится в библиотеках?


Не хранится, реализуется с помощью кода.
scf
Дата: 28.09.2017 08:12:26
wadman
Дата: 28.09.2017 09:09:05
schi
РадостныйВизг
Здравствуйте, как я понимаю для этой конвертации необходима таблица соответствия элементов. Хранится ли в системе Windows эта таблица отдельно или она реализуется с только помощью кода и хранится в библиотеках?


Не хранится, реализуется с помощью кода.

Конвертация с помощью таблицы и есть с помощью кода. Или имеется в виду только на if-ах?
schi
Дата: 28.09.2017 10:27:12
wadman
schi
пропущено...


Не хранится, реализуется с помощью кода.

Конвертация с помощью таблицы и есть с помощью кода. Или имеется в виду только на if-ах?


Имеется в виду, что нет готовой фукнции типа MutliByteToWideChar для Utf8 в Win1251 и нет готовой ссылки на таблицу такого преобразования. Впрочем, я не слежу за потрохами Windows уже лет 10, может, что и появилось, тогда поправь меня.
Dima T
Дата: 28.09.2017 10:49:10
schi
wadman
пропущено...

Конвертация с помощью таблицы и есть с помощью кода. Или имеется в виду только на if-ах?


Имеется в виду, что нет готовой фукнции типа MutliByteToWideChar для Utf8 в Win1251 и нет готовой ссылки на таблицу такого преобразования. Впрочем, я не слежу за потрохами Windows уже лет 10, может, что и появилось, тогда поправь меня.

Есть комбинация из двух готовых 20820358
schi
Дата: 28.09.2017 11:37:04
Dima T
schi
пропущено...


Имеется в виду, что нет готовой фукнции типа MutliByteToWideChar для Utf8 в Win1251 и нет готовой ссылки на таблицу такого преобразования. Впрочем, я не слежу за потрохами Windows уже лет 10, может, что и появилось, тогда поправь меня.

Есть комбинация из двух готовых 20820358


Видимо, мои знания устарели, так как в имеющейся у меня RTL Delphi (2006) преобразование из UTF-8 в UTF-16 выполняется кодом.