我意识到,在 wxStyledTextCtrl 中,如果用户的评论包含非 ASCII 字符,则WordStartPosition
和报告的位置WordEndPosition
是错误的。在 wxStyledTextCtrl 中处理非 ASCII 字符的好方法是什么?如何识别非 ASCII 字符?
问问题
112 次
1 回答
0
您现在可能已经回答了这个问题,但是在我所做的实验中,WordStartPosition 和 WordEndPosition 仍然适用于非 ASCII 字符。控件内部的数据以 UTF-8 格式存储,这些函数给出了该数据中单词开始和结束的字节数。如果这不是你发生的事情,你能在他们不工作的地方发布一个样本吗?
至于确定哪些字符是 ASCII 和不是 ASCII,类似下面的方法似乎有效(假设 a 是开始位置,b 是结束位置):
wxString s = m_stc->GetTextRange(a,b);
for (wxString::const_iterator i = s.begin(); i != s.end(); ++i)
{
wxUniChar uni_ch = *i;
if(uni_ch.IsAscii())
{
//something
}
else
{
//something else
}
}
我确实注意到的一件事是,如果您为 a 或 b 使用位于非 ASCII 字符之一中间的值,则生成的字符串将为空。如果您还没有找到解决方案,我希望这对您有所帮助。
于 2016-09-26T00:25:19.410 回答