Member 12678806 Ответов: 2

Перевод с английского на иврит


MultiByteToWideChar не может конвертировать английский язык в иврит, если я дам код

страницы в 1255 году может у пожалуйста, скажите мне, почему его происходит .

Что я уже пробовал:

nSize = MultiByteToWideChar(nlanguageCodePage, 0, sUnicodeBuff, -1, NULL, NULL);
MultiByteToWideChar(nlanguageCodePage, 0, sUnicodeBuff, -1, chUniocodeBuff, nSize);

2 Ответов

Рейтинг:
2

W∴ Balboos, GHB

Добавляя к уже приведенному решению Jochen Amtdt, если вы хотите восполнить свою конверсию, я предлагаю вам создать поисковая таблица, значение английской части символов используется в качестве индекса в массиве, значение-иврит.

Это позволяет вам использовать значение символа для перевода самого себя, просто используя значение, на которое он ссылается. Вам нужно будет обрабатывать верхний и Нижний регистры, а также обрабатывать символы, которые вы не хотите изменять (установите их на ноль и используйте в качестве флага или карты для себя - последние более эффективны во время выполнения, так как вам не нужно проверять значение, в то время как первые легче настроить).

И, конечно же, вам нужно будет перевернуть текст-либо в абсолютном выражении, либо изменить представление блока на R- & gt;L.


Рейтинг:
0

Jochen Arndt

MultiByteToWideChar не перевести". Он преобразует между различными кодировками символов.

Вызов его, как в вашем примере кода, приведет к преобразованию строк с использованием указанной кодовой страницы (1255 = ANSI Hebrew) в UTF-16LE (кодировка Unicode, используемая внутри Windows). Кодировка символов означает, что двоичные коды присваиваются определенным символам. Преобразование просто ищет коды UTF-16LE для кодов входной строки в соответствии с переданной кодовой страницей.

С 8-битными кодовыми страницами, такими как 125x ANSI, нижние 128 символов отображаются так, как они есть (старший байт вывода UTF-16LE равен нулю), а верхние 128 символов просматриваются. Пример:

Характер ANSI-1255 UTF-16LE
Один 0x41 0x0041
א Это 0xe0 0x05D0


Вероятно, вы ищете перевод или транслитерацию. Windows не предоставляет таких функций. Поэтому вам придется написать его самостоятельно или поискать в интернете существующий код.