Как использовать Scintilla для строк Unicode

Я установил кодовую страницу в UTF8 с SCI_SETCODEPAGE перед использованием scintilla, но scintilla не обрабатывает строки как Unicode. Я вижу некоторый код, который на самом деле явно преобразует данные lparam в char *.

Нужно ли мне делать какие-то дополнительные настройки, чтобы scintilla работала со строками Unicode?


person user2357709    schedule 07.05.2013    source источник
comment
UTF8 != Unicode, я думаю, вам нужно немного яснее понять, что вы ожидаете. Я не знаю scintilla, но если вы выбрали UTF8, я ожидаю, что он преобразуется в char*. Возможно, вы хотите UTF16?   -  person john    schedule 07.05.2013


Ответы (1)


Когда вы говорите, что используете Scintilla, вы имеете в виду, что на самом деле используете SciTE, текстовый редактор, основанный на библиотеке редактирования текста Scintilla? Я использую SciTE, и у меня настроена кодировка в UTF-8. Это делается путем добавления следующего свойства в один из ваших файлов параметров:

code.page=65001

Например, просто вставьте это в «Параметры» -> «Открыть файл параметров пользователя» и сохраните его.

person Robert Gomez    schedule 07.05.2013
comment
На самом деле у меня есть приложение (vc++), которое использует scintilla для написания текстовых сообщений в элементе управления редактированием. Мое приложение установило кодовую страницу на SC_CP_UTF8 с помощью кода для scintilla и отправки строк Unicode в scintilla, но scintilla не генерирует никаких выходных данных. - person user2357709; 07.05.2013
comment
@user2357709 user2357709 Важный вопрос заключается в том, что вы подразумеваете под «строками Unicode». - person john; 07.05.2013
comment
О, хорошо, я не был точно уверен в вашем сценарии. Я не использовал Scintilla сам. Вы уверены, что используете правильный формат, например SC_CP_UTF8 (65001) или SCI_SETCODEPAGE (65001). Вы видели документацию? - person Robert Gomez; 07.05.2013
comment
Мое приложение поддерживает строки в формате TCHAR. Эта строка отправляется в scintilla с почтовым сообщением в lparam. Scintilla поддерживает Unicode в формате utf8. В своем приложении я использую Call(SCI_SETCODEPAGE, SC_CP_UTF8, 0); Call — это указатель функции на функцию в библиотеке scintilla, которая устанавливает кодовую страницу на SC_CP_UTF8 (65001). Здесь проблема в том, что scintilla не генерирует никакой строки. - person user2357709; 07.05.2013
comment
Здесь проблема в том, что scintilla * не генерирует строку - person user2357709; 07.05.2013
comment
К сожалению, формат TCHAR означает разные вещи в зависимости от того, какие у вас настройки сборки. Знаете ли вы, делаете ли вы сборку Unicode или сборку ANSI? - person john; 07.05.2013
comment
Хорошо, насколько я понял из документации, этот параметр означает, что вы должны предоставлять данные в UTF-8, но из того, что вы сказали, вы предоставляете UTF-16. Поэтому я думаю, что вам нужно сделать преобразование UTF-16 в UTF-8 самостоятельно. - person john; 08.05.2013