热点推荐

查看: 1858|回复: 0
收起左侧

[资料] Qt5.5.1中文乱码解决办法

[复制链接]
  • TA的每日心情
    点赞
    昨天 09:34
  • 签到天数: 585 天

    连续签到: 2 天

    [LV.9]以坛为家II

    348

    主题

    1315

    帖子

    6427

    积分

    Rank: 9

    积分
    6427

    突出贡献优秀版主荣誉管理论坛元老切换助手验证会员最佳新人

    发表于 2017-5-3 21:02:01 | 显示全部楼层 |阅读模式

    51Halcon诚邀您的加入,专注于机器视觉开发与应用技术,我们一直都在努力!

    您需要 登录 才可以下载或查看,没有帐号?会员注册

    x
    现在能看到的Qt的书籍多半是QT4的,把代码复制下来就会发现中文乱码现象。
    比如我学习霍亚飞的Qt系列书籍都是基于Qt4的。他在书中解决中文乱码的办法是
    QT4解决办法
    1. QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
    复制代码
    如此等等通过QTextCodec函数设置的方法试过各种都是失败告终
    这种方法在QT5中已经失效。
    Qt5解决中文乱码方法:
    • 通过QString::fromLocal8Bit函数
      把中文用 QString::fromLocal8Bit(“你好”); 包起来,而不是仅仅用 QString() ;
    • 通过QStringLiteral函数
      通过QStringLiteral宏把中文包起来,QStringLiteral(“中国”); 而不是仅仅使用QString() ;
    • 通过QString::fromUtf8函数
      这个和前面两种是一样的操作,但是我没有试验成功,QString::fromUtf8(“你好”);
    • 通过预编译
      在类中添加预编译
      1. #pragma execution_character_set("utf-8")
      复制代码


    5.借助外部工具使用电脑自带的记事本或者Notepad++软件打开含中文的文件,选择保存为utf-8格式,我使用Notepad++保存为utf-8无BOM格式才能正常使用
    实验1:
    新建控制台 main中添加如下代码,注意头文件
    1. qDebug()<<"a:"<<qstring("你好")<<qstring::fromutf8("我好")
    2.            <<qstring::fromlocal8bit("他好")<<qstringliteral("大家好");
    3.     return 0;
    复制代码
    结果:
    可以看到,第一个和第二个失败,后面两个成功。
    实验2:
    添加预编译
    1. #include "QDebug"
    2. #include "qstring.h"

    3. #pragma execution_character_set("utf-8")

    4. int main(int argc, char *argv[])
    5. {
    6.     qDebug()<<"a:"<<qstring("你好")<<qstring::fromutf8("我好")
    7.            <<qstring::fromlocal8bit("他好")<<qstringliteral("大家好");
    8.     return 0;
    9. }
    复制代码
    结果:
    可以看到第三个出了一点问题,
    总结:
    这几种方法选一个适合你的就行,我用的是QStringLiteral

    无效附件更新 权限提升操作 删帖申请 举报以及其他需要帮助请加入QQ群:214663141 广告位招商 有意者联系
    您需要登录后才可以回帖 会员登录 | 会员注册

    本版积分规则

    经营性网站备案信息 经营性网站
    备案信息

    中国互联网举报中心 中国互联网
    举报中心

    中国文明网传播文明 中国文明网
    传播文明

    诚信网站

    深圳市市场监督管理局企业主体身份公示 工商网监
    电子标识