Qt5.5.1中文乱码解决办法

现在能看到的Qt的书籍多半是QT4的,把代码复制下来就会发现中文乱码现象。
比如我学习霍亚飞的Qt系列书籍都是基于Qt4的。他在书中解决中文乱码的办法是
QT4解决办法

QTextCodec::setCodecForTr(QTextCodec::codecForLocale());

如此等等通过QTextCodec函数设置的方法试过各种都是失败告终
这种方法在QT5中已经失效。

Qt5解决中文乱码方法:

  1. 通过QString::fromLocal8Bit函数
    把中文用 QString::fromLocal8Bit(“你好”); 包起来,而不是仅仅用 QString() ;

  2. 通过QStringLiteral函数
    通过QStringLiteral宏把中文包起来,QStringLiteral(“中国”); 而不是仅仅使用QString() ;

  3. 通过QString::fromUtf8函数
    这个和前面两种是一样的操作,但是我没有试验成功,QString::fromUtf8(“你好”);

  4. 通过预编译
    在类中添加预编译

    #pragma execution_character_set("utf-8")
5.借助外部工具
使用电脑自带的记事本或者Notepad++软件打开含中文的文件,选择保存为utf-8格式,我使用Notepad++保存为utf-8无BOM格式才能正常使用

实验1:

新建控制台 main中添加如下代码,注意头文件

    qDebug()<<"a:"<<QString("你好")<<QString::fromUtf8("我好")
           <<QString::fromLocal8Bit("他好")<<QStringLiteral("大家好");
    return 0;

结果:
这里写图片描述

可以看到,第一个和第二个失败,后面两个成功。

实验2:

添加预编译

#include "QDebug"
#include "qstring.h"

#pragma execution_character_set("utf-8")

int main(int argc, char *argv[])
{
    qDebug()<<"a:"<<QString("你好")<<QString::fromUtf8("我好")
           <<QString::fromLocal8Bit("他好")<<QStringLiteral("大家好");
    return 0;
}

结果:
这里写图片描述

可以看到第三个出了一点问题,

总结:

这几种方法选一个适合你的就行

推荐两篇文章
http://blog.sina.com.cn/s/blog_615e7b3f0101r5os.html
http://blog.csdn.net/mfcing/article/details/50933572

  • 6
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值