我想检测用户是否在文件保存对话框中输入了非ASCII(否则错误地称为Unicode)字符(例如,り).当我使用Qt时,任何非ASCII字符都正确保存在QString中,但我无法弄清楚在将字符串转换为ASCII之前如何确定该字符串中的任何字符是否为非ASCII.上面的那个字符最终被写入文件系统ã‚Š
.
最简单的方法是检查每个charachter的代码(QChar :: unicode())是否低于128,如果你需要纯7位ASCII.
我的理解中没有这样的内置功能.
大约1 - 2年前,我提出了一个用于QString/QChar的isAscii()方法来包装低级Unix isacii()和相应的Windows函数,但它被拒绝了.你可以写下这样的东西:
bool isUnicode = !myString.at(3).isAcii();
如果你能说服维护者,我仍然认为这将是一个方便的功能.:-)
除此之外,你恐怕需要自己检查ascii边界.您可以自己完成以下操作:
bool isUnicode = myChar.unicode() > 127;
有关详细信息,请参阅文档
ushort QChar :: unicode()const
这是一个过载功能.