一、写作目的
写QT有几年时间了,因为很多时候是在windows上面开发,我选择了 Visual Stdio + QT VS Tool 作为开发环境。用过这种方案的人应该会发现它存在两个问题:
- 代码中的中文,在编译运行的时候会显示为乱码
- 当你用QT Creator打开VS的项目的时候(两者的项目是可以互转的,这点毋庸置疑),源码都会直接显示为乱码。
原因其实很简单,因为VS的默认编码为GB2312,而QT的编码为UTF8-BOM版本,二者在英文字母上是兼容的,所以没有问题,但是中文并不兼容。解决这个编码问题,网上对此也有一些方案,这篇文章更多的是一种总结和补充!
二、解决方案
方案一:源文件开头直接加入以下预编译选项,告诉VS使用UTF8的方式编译(所有包含中文的源文件都应该有)
1
2
3我其实这几年一直用的这种方案,好处是运用起来十分简洁。当然,缺点也是有的:(1)这行指令毕竟是只是MSVC(VS的编译器)的预编译指令,感觉更像是修复VS的某种bug,在别的平台中看,源代码中无处不在的这几行代码显得格格不入,有些扎眼。(2)它其实没有解决QT Creator打开VS项目,源码显示为乱码的问题。
方案二:在VS中弃用GB2312编码格式,而采用UTF8-BOM编码。
这种方案,需要额外设置编译器选项!!!(网上很多教程都缺少了这一步,所以至少我以前从来没有成功过……..)步骤如下:
由于Visual Stdio是默认隐藏高级保存选项的,第一步我们先设置选项为可见(这个是设置一次后永久存在)
VS菜单栏–工具–自定义
菜单栏选择”文件”–添加命令
左侧选择文件,右侧找到高级保存选项,点击确定设置编码为UTF-8 BOM编码(仅对当前文件生效,故所有包含中文的源文件都应该如此设置一下)
文件–高级保存选项–设置编码如下图(如果高级保存选项是灰色不可选中,任意改动一下代码文件就好了)
到了这一步,其实项目源代码保存格式已经是UTF-8了,所以直接用QT Creator打开应该是正常显示中文的,但是VS编译结果仍旧会是乱码,因此还要设置一下编译器选项设置编译器附加选项(仅对当前项目生效),这种方案可能只有VS 2015及以后版本有效,本人测试环境为Visual Stdio 2019 community版本
项目右键–属性–C/C++–所有选项–附加选项–写入“/utf-8”–确定
这种方案配置起来略微麻烦一点,但是如果是为了后期的跨平台,或者说让你的代码看起来不附带开发平台相关的特征,我认为是很有必要的吧。