Qt 中文乱码解决方案

Posted 一杯清酒邀明月

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt 中文乱码解决方案相关的知识,希望对你有一定的参考价值。

一、问题是什么?

在学习Qt编程的过程中,大多数人都遇到过中文乱码的问题。总结起来有三类:

1. Qt Creator中显示的汉字变为乱码,编辑器上方有“Could not decode "..." with "UTF-8"-encoding. Editing not possible.”的错误提示。此时,出现乱码的文档是不可编辑的。

2. Qt Creator中显示的汉字正常,但编译的时候会出现“常量中有换行符”等一系列错误报警。其实,这也是文字编码的问题。

3. 编译时未报错,但生成的程序中文乱码。

原因. Qt Creator的编辑器默认使用UTF-8(代码页65001)编码来读取文本文件。而Visual Studio保存文件时默认采用的是本地编码,对于简体中文的Windows操作系统,这个编码就是GB2312(代码页936)。如果使用Qt Creator读取由Visual Studio创建的文件,那么编辑器就会以UTF-8编码格式读取GB2312编码格式的文件,出现中文乱码,因为这两套编码系统对汉字编码是不同的。至于英文部分不会乱码,是因为UTF-8和GB2312在单字节字符部分是兼容的。


解决办法:

首先,要把项目中所有的头文件和源文件全都转换成UTF-8+BOM编码保存,全选文本,然后右键选择Add UTF-8 BOM on save。

1. 第1个问题不存在了。

2. 第2个问题也不存在了。

3. 第3个问题,你也可以用上个方案中的方法来解决,但有更好的方法。那就是要用到中文字符的头文件和源文件开头加上MSVC的一个宏:

1 #if _MSC_VER >= 1600
2 #pragma execution_character_set("utf-8")
3 #endif

 

以上是关于Qt 中文乱码解决方案的主要内容,如果未能解决你的问题,请参考以下文章

QT命令行编译时中文显示乱码怎么解决,满意追加

解决Qt5和VS2015中文乱码的问题

qt中文乱码

QT+VS后的中文乱码问题

Qt 中文乱码解决方案

Qt使用MSVC编译器中文乱码解决方法