Scintilla поддерживает Unicode?Как насчет SCI_GETCHARAT? - PullRequest
6 голосов
/ 29 мая 2011

Действительно ли Scintilla поддерживает Unicode?Если да, то почему SCI_GETCHARAT возвращает значение char (приведенное к LRESULT)?

Ответы [ 2 ]

4 голосов
/ 08 июня 2011

Из документов SCI_SETCODEPAGE ...

Кодовая страница SC_CP_UTF8 (65001) переводит Scintilla в режим Unicode, при этом документ обрабатывается как последовательность символов, выраженная в UTF-8. Перед преобразованием в ОС текст преобразуется в обычную кодировку Unicode платформы и, таким образом, может отображать символы иврита, арабского языка, кириллицы и хана.

Вам придется проверить байт, который вы извлекаете с помощью SCI_GETCHARAT (pos), и, в зависимости от старших битов этого, возможно, прочитайте SCI_GETCHARAT (pos + 1) и далее, чтобы получить кодовую точку Unicode. (См. здесь .)

Изменить:

Для некоторого кода C ++, который делает это, см. Ниже (поиск SciMoz::GetWCharAt):

http://vacuproj.googlecode.com/svn/trunk/npscimoz/npscimoz/oldsrc/trunk.nsSciMoz.cxx

2 голосов
/ 29 мая 2011

Я был давным-давно, но, если я хорошо помню, Scintilla не является родным Unicode-приложением.Тем не менее, он имеет некоторую поддержку Unicode.

Во-первых, имя функции должно SCI_GETBYTEAT, поскольку он возвращает байт из внутреннего буфера UTF-8.Приложение поддерживает Unicode для keybaord, поэтому оно поддерживает Unicode:)

...