VS2019 编码问题,如何完美改为UTF-8

前言

VS的编码问题历来令人头疼,虽然GBK编码方式更友好,但实际上不利于跨平台,跨开发工具。

我在VS2019 + Qt5.14环境的时候就遇到了问题,Qt默认是用UTF-8,那么很容易造成乱码问题,不是控制台乱码,就是Qt界面乱码。

网上的千篇一律的办法,有的是通过

#ifdef WIN32  
#pragma execution_character_set("utf-8")  
#endif

虽然也能解决,但并不是很好的解决方案,而且不够漂亮完美,我很不喜欢。

所以一阵研究,找到了更好的办法

综合考虑,VS2019采用UTF-8 with BOM编码会更好一点,以下方案也是改成UTF-8 with BOM,当然也适用于只想要UTF-8 without BOM。

为了方便观察编码,而不是用其他文本软件来查看,我预先下载了一个插件FileEncoding,它会在右下角显示当前文件的编码。
VS2019 编码问题,如何完美改为UTF-8_第1张图片

方案一

下载插件解决编码问题

据说Linux下不识别with BOM的,原本想尝试UTF-8,但force utf-8插件我使用后无效,就只好采用with BOM的方案。

后来使用Format on Save插件解决了问题,下载好后,在工具-选项找到该插件,只需要设置两项就行,第一项是考虑到在windows上,所以改了。
VS2019 编码问题,如何完美改为UTF-8_第2张图片VS2019 编码问题,如何完美改为UTF-8_第3张图片
然后新建文件后,就可以在右下角看到,是GBK编码,但是保存后,就变成了UTF-8 with BOM。

方案二

使用editorconfig文件,统一代码规范,也可统一编码问题。可以直接由VS生成,自 Visual Studio 2019 起,可以通过“工具” > “选项”>"文本编辑器"基于代码样式设置生成 EditorConfig 文件。
VS2019 编码问题,如何完美改为UTF-8_第4张图片

我这里开发是C++,在代码样式里,可以找到基于代码样式设置生成 EditorConfig 文件。

生成后,在该文件中加入

#编码方式,有以下几种类型:latin1, utf-8, utf-8-bom, utf-16be, utf-16le
charset = utf-8-bom

保存即可。对了,别忘了这个文件是需要放到项目路径下的。

补充一点,关于Qt界面乱码,上述可能还不够,只是统一了文件的编码标准。需要在项目属性-C/C+±命令行-其他选项下面加入/utf-8 ,这样才就统一了Qt UTF-8编码标准,Qt终端,Ui界面就不会乱码了。


2022-09-04 更新:

若是采用UTF-8,不带BOM方案,那可以参阅这篇文章,详细解释了乱码原因,解决方案。

探究Visual Studio中的乱码问题

以上是我目前找到的最佳解决方案。欢迎补充!

使用 EditorConfig
C++ EditorConfig 格式设置约定
Format on Save

你可能感兴趣的:(杂记,qt,visual,studio,windows,c++,开发语言)