我意识到在wxStyledTextCtrl中如果用户的评论包含非ASCII字符,WordStartPosition
和WordEndPosition
报告的位置是错误的。在wxStyledTextCtrl中处理非ASCII字符的好方法是什么?如何识别非ASCII字符?
答案 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字符的中间,结果字符串将为空。如果您还没有找到解决方案,我希望能提供一些帮助。