文章已更新,最新地址:http://www.fearlazy.com/index.php/post/129.html
测试环境:Qt5.9.6 ,使用VS2017的编译器。
一、乱码现象:
1.源代码中的中文显示乱码
2.编译时出现“常量中有换行符"的警告。
3.运行时软件界面中文显示乱码
二、解释:
相关内容:源码字符集、执行字符集
1.QtCreator编辑器默认采用UTF-8编码读取文件。VS默认采用本地编码(我们使用的windows一般为GB2312)
用QtCreator读取vs创建的文件则会出现冲突。
2.MSVC编译文件时根据源码文件有无BOM来定义源码字符集,如果有BOM就按BOM解释编码,如果没有就使用本地字符集。
3.MSVC的执行字符集默认是本地字符集。
三、推荐解决办法:
使用UTF-8 + BOM编码 (UTF-8跨平台)
1.把源代码的文件转化成UTF-8 (带BOM)
2.在使用中文的文件中加上:
#if _MSC_VER >= 1600
#pragma execution_character_set("utf-8")
#endif
告诉MSVC编译器,执行字符集是UTF-8。
注:使用UTF-8(BOM)的源码文件,用mingw编译时中文也是正常的。