如何在QString中检测到非ASCII字符?

 残念易_138 发布于 2023-02-05 12:52

我想检测用户是否在文件保存对话框中输入了非ASCII(否则错误地称为Unicode)字符(例如,り).当我使用Qt时,任何非ASCII字符都正确保存在QString中,但我无法弄清楚在将字符串转换为ASCII之前如何确定该字符串中的任何字符是否为非ASCII.上面的那个字符最终被写入文件系统ã‚Š.

2 个回答
  • 最简单的方法是检查每个charachter的代码(QChar :: unicode())是否低于128,如果你需要纯7位ASCII.

    2023-02-05 12:53 回答
  • 我的理解中没有这样的内置功能.

    大约1 - 2年前,我提出了一个用于QString/QChar的isAscii()方法来包装低级Unix isacii()和相应的Windows函数,但它被拒绝了.你可以写下这样的东西:

    bool isUnicode = !myString.at(3).isAcii();
    

    如果你能说服维护者,我仍然认为这将是一个方便的功能.:-)

    除此之外,你恐怕需要自己检查ascii边界.您可以自己完成以下操作:

    bool isUnicode = myChar.unicode() > 127; 
    

    有关详细信息,请参阅文档

    ushort QChar :: unicode()const

    这是一个过载功能.

    2023-02-05 12:53 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有