• 如何在VC中查询中文,及QT5的中文处理


    1,VC中查询所有含中文字符串

    使用正则表达式,查询内容为:

    (".*[u4E00-u9FA5]+)|([u4E00-u9FA5]+.*")

    这样,就可以把代码中的中文都查询出来.对处理QT5中的中文问题,很有帮助.

    2,VC环境下,QT5中文的处理

    VC环境下,提供两种编码文式,UNICODE,和多字节字符集,而QT5中使用的字符集为UTF-8,要正确处理QT5中的中文情况,要注意以下几点:

    A,QT5内部都是UTF-8编码在处理,不需要转换了,一个典型的问题,就是中文目录的问题,所有通过QT5获取的中文目录本身就是UTF-8格式,系统可以识别,不需要像QT4那样,需要转换成本地编码方式.静态字符串目录的转换,与QT5中文字符串的处理一样.

    B,VC下静态字符串如果含有中文的话,如果是多字节字符集,本人测试以下三种情况有效:

    QString str=QStringLiteral("测试");

    QString str=QString().fromLocal8Bit("测试");

    QString str=QString().fromUtf16(L"测试");

    C,QT5与其他非QT5库的字符串转换

    QString转char*:QString().toLocal8Bit();

    QString转wchar*:QString().toUtf16();

    如果不进行这样的转换,在非QT5库中得到的,就是乱码.

    以上,QT5所遵循的原则就是,进入QT5的字符串,无论是哪种编码方式,都得转成UTF-8(QT5默认),从QT5出来的字符串,需要根据情况来处理.

    本人测试了把C++代码文件转成UTF-8编码格式,希望统一QT5的编码处理,就像平时一样,不需要转换,但是没有成功,可能是我的测试方法不正确,也可能是VC自己的原因.

    在网上查资料,QtCreater中,把C++代码文件的编码方式改成UTF-8,就没有编码转换的问题.本人没有测试过,因为对些不熟悉,一直用VC.

    如果这种方式是正确的,那可能就与VC的编码处理方式有关吧.


  • 相关阅读:
    总结几种常见web攻击手段及其防御方式(转)
    使用Chrome DevTools的Timeline分析页面性能(转)
    Sublime Text 无法使用Package Control或插件安装失败的解决方法(转)
    typeScript笔记
    ProtoBuf.js – Protocol Buffers的Javascript实现(转)
    JS到JAVA反射
    cocos 优化方案相关参考
    PMP学习笔记 (二)
    PMP学习笔记 (一)
    CentOS7安装GLPI资产管理系统
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3237032.html
Copyright © 2020-2023  润新知