wxStyledTextCtrl 非 ASCII 字符

wxStyledTextCtrl non ASCII characters

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

你现在可能已经回答了这个问题,但在我所做的实验中,WordStartPosition 和 WordEndPosition 仍然适用于非 ASCII 字符。控件内部的数据以 UTF-8 格式存储,这些函数给出该数据中单词开始和结束的字节数。如果这不是您遇到的情况,您可以 post 一个它们不起作用的示例吗?

至于确定哪些字符是 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 字符的中间,则生成的字符串将为空。如果您还没有找到解决方案,我希望这对您有所帮助。