如何使用 Scintilla 处理 Unicode 字符串
Posted
技术标签:
【中文标题】如何使用 Scintilla 处理 Unicode 字符串【英文标题】:How to use Scintilla for Unicode strings 【发布时间】:2013-05-07 09:28:35 【问题描述】:在使用 scintilla 之前,我使用 SCI_SETCODEPAGE
将代码页设置为 UTF8,但 scintilla 不会将字符串视为 Unicode。我看到一些代码实际上将lparam
数据显式转换为char *
。
我是否需要做一些额外的设置才能让闪烁体适用于 Unicode 字符串?
【问题讨论】:
UTF8 != Unicode,我认为您需要更清楚地了解您的期望。我不知道 scintilla,但如果您选择了 UTF8,我希望它会转换为char*
。也许你想要 UTF16?
【参考方案1】:
当您说您在使用 Scintilla 时,您的意思是您实际上是在使用 SciTE,基于 Scintilla 文本编辑库的文本编辑器?我使用 SciTE,并将其设置为 UTF-8 编码。这是通过在您的选项文件之一中添加以下属性来完成的:
code.page=65001
例如,只需将其粘贴到选项 -> 打开用户选项文件并保存。
【讨论】:
实际上我有一个应用程序(vc++),它使用 scintilla 在编辑控件中编写文本消息。我的应用程序已通过 scintilla 的代码将代码页设置为 SC_CP_UTF8,并将 Unicode 字符串发送到 scintilla,但 scintilla 没有生成任何输出。 @user2357709 重要的问题是你所说的“unicode 字符串”是什么意思。 哦,好吧,我不太确定你的情况。我自己没有使用过 Scintilla。您确定您使用的是正确的格式,即 SC_CP_UTF8 (65001) 或 SCI_SETCODEPAGE(65001)。你见过documentation吗? 我的应用程序正在维护 TCHAR 格式的字符串。该字符串与 lparam 中的 post 消息一起发送到 scintilla。 Scintilla 支持 utf8 格式的 Unicode。在我的应用程序中,我正在使用 Call(SCI_SETCODEPAGE, SC_CP_UTF8, 0); Call 是指向 scintilla 库中将代码页设置为 SC_CP_UTF8(65001) 的函数的函数指针。这里的问题是 scintilla 没有生成任何字符串。 这里的问题是 scintilla *不生成任何字符串以上是关于如何使用 Scintilla 处理 Unicode 字符串的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Windows 上使用 GCC 编译 Scintilla?
Scintilla:如何在给定特定字符位置的情况下找到字节位置