wxStyledTextCtrl非ASCII字符

时间:2016-09-21 21:31:50

标签: c++ wxwidgets scintilla wxstyledtextctrl

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

1 个答案:

答案 0 :(得分:0)

您现在可能已经回答了这个问题,但在我已经完成的实验中,WordStartPosition和WordEndPosition仍然可以使用非ASCII字符。控件内部的数据以UTF-8格式存储,这些函数给出了该字开头和结尾的数据中的字节数。如果那不是你发生的事情,你可以在他们不工作的地方张贴样本吗?

至于确定哪些字符是和不是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字符的中间,结果字符串将为空。如果您还没有找到解决方案,我希望能提供一些帮助。