- 中文乱码原因
- Qt Creator的编辑器默认使用UTF-8(代码页65001)编码来读取文本文件。而Visual Studio保存文件时默认采用的是本地编码,对于简体中文的Windows操作系统,这个编码就是GB2312(代码页936)。如果使用Qt Creator读取由Visual Studio创建的文件,那么编辑器就会以UTF-8编码格式读取GB2312编码格式的文件,出现中文乱码,因为这两套编码系统对汉字编码是不同的。至于英文部分不会乱码,是因为UTF-8和GB2312在单字节字符部分是兼容的。
- MSVC在编译时,会根据源代码文件有无BOM来定义源码字符集。如果有BOM,则按BOM解释识别编码;如果没有,则使用本地字符集,对于简体中文的Windows操作系统就是GB2312。那么,当MSVC遇到一个没有BOM的UTF-8编码的文件时,它通常会把文件看作GB2312的来处理。如果文件全是英文没有问题,但如果包含中文,编译器就会出现误读。这种情况下,Qt Creator编辑器是正常的。
- 解决方法
1 “采用本地编
码字符集”方案,解决方法如下:
首先,要把项目中所有的头文件和源文件全都转换成GB2312编码保存。
在Qt Creator中打开项目,点击左侧工具栏“项目”,在“编辑器”选项卡中把“默认编码”改成“GB2312”。
这样做就放弃了Qt跨平台的能力,不能使用msvc编译器编译
还有就是在使用中文的地方使用字符串常量的地方加上QStringLiteral宏或QString::fromLocal8Bit函数
2 “采用UTF-8编码字符集”方案,解决方法如下:
首先,要把项目中所有的头文件和源文件全都转换成UTF-8+BOM编码保存。
在用到中文字符的地方头文件和源文件添加下面宏
#if _MSC_VER >= 1600
#pragma execution_character_set(“utf-8”)
#endif