VS2022&Qt Designer上的中文输出乱码的几种解决方案

写在前面

        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

猜你喜欢

转载自blog.csdn.net/SeanTAT/article/details/125075665