0

我意识到,在 wxStyledTextCtrl 中,如果用户的评论包含非 ASCII 字符,则WordStartPosition和报告的位置WordEndPosition是错误的。在 wxStyledTextCtrl 中处理非 ASCII 字符的好方法是什么?如何识别非 ASCII 字符?

4

1 回答 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 回答