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:"<"你好")<"我好")
           <"他好")<"大家好");
    return 0;
}

结果:
这里写图片描述

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

总结:

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

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

你可能感兴趣的:(Qt)