写在前面
VS的强大功能使得它成为了我的Qt编译器。在学习Qt的过程中,我也发现了很多问题,毕竟VS不是Qt的原生编译器。
遇到问题,解决问题,厘清问题的原因,过程也是十分有趣的。
原因
Qt Create 保存文件使用的是UTF-8编码,VC虽然可以正常编译带BOM的UTF-8编码的源文件(所以这里将源文件改为带BOM的UTF-8,比如可以使用NodePad++设置UTF-8),但是生成的可执行文件的编码是Windows本地字符集,比如GB2312。在可执行文件中,字符串是以GB2312编码的,当执行到这条语句时,对这个字符串是以UTF-8解码的,所以会出现乱码。
方案1(笔者使用成功):
点击“工具”“自定义”选项,菜单栏选择“文件”。
点击“添加命令”按钮,从“文件”中选择“高级保存选项”。
添加成功,并根据自己喜好调整好顺序之后,点击“高级保存选项”。
使用如下设置即可:
方案2:
选择“扩展”,“管理扩展”,安装如下插件:
下载好后,在“工具”“选项”找到该插件,只需要设置两项就行,第一项是考虑到在windows上,第二项是编码格式。
方案三:
使用editorconfig文件,可以统一代码规范,也可统一编码问题。可以直接由VS生成,自 Visual Studio 2019 起,可以通过“工具” “选项”"文本编辑器"基于代码样式设置生成 EditorConfig 文件。
例如是C++开发,在代码样式里,可以找到基于代码样式设置生成EditorConfig 文件。
生成后,在该文件中加入:
#编码方式,有以下几种类型:latin1, utf-8, utf-8-bom, utf-16be, utf-16le
charset = utf-8-bom
保存即可。记住:这个文件是需要放到项目路径下的。
方案四:
在编译代码段靠前部位,添加代码实现编码方式转换。
#ifdef WIN32
#pragma execution_character_set("utf-8")
#endif
参考:
https://blog.csdn.net/weixin_43719811/article/details/120900669
https://blog.csdn.net/erkuoge6464/article/details/124082338
https://jingyan.baidu.com/article/7082dc1cbeddc0a40a89bdbf.html