文章目录

  • 前言
  • 解决方案
  • 结语


前言

今天在写 C++ 算法实验的时候遇到了

  • VS2019 控制台中文输出乱码
  • vs2022projecttemplate 识别不出自定义模板_visual studio

  • 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
  • vs2022projecttemplate 识别不出自定义模板_unicode_02

等等问题,有关中文编码的,起初我查找网上的各种方法,包括

  • 修改控制台的编码字符集
  • 使用 Format on Save
  • 更改 高级保存选项

等等方法,发现都没有效果(指对我这个情况没有作用),困扰了我一晚上,其实后来我解决后发现前面的做法是有用处的,只是我的这个情况有点特殊,容我娓娓道来。

后来在安装和卸载扩展时,偶然发现在我的 VS2019 扩展中安装了一个奇怪的东西。

vs2022projecttemplate 识别不出自定义模板_编码格式_03


这个 Force UTF-8 (No BOM),好家伙,原来是你的问题,怪不得我每次设置 UTF-8 with BOM 的编码格式(即 UTF-8 带签名)在 VS2019 中修改保存后,又会变成 UTF-8 (即 UTF-8 无签名),然后就导致乱码,无论怎么修改编码格式都没用,只要在 VS2019 中保存一下就会强制变成 UTF-8 无签名 的编码格式。

解决方案

于是我卸载了这个扩展。

vs2022projecttemplate 识别不出自定义模板_编码格式_04


再次改成 UTF-8 with BOM 的编码格式(可以通过 VS2019 里的 高级保存选项 更改或者通过 记事本另存为 来更改编码格式),然后运行,发现可以成功显示中文,不再乱码,在 VS2019 中修改保存后也不会出问题了。

vs2022projecttemplate 识别不出自定义模板_unicode_05


至此,困扰了我一晚上的问题终于解决了,可能是我之前为了解决某个问题在网上查询后安装了这个扩展,然后一直就没注意了,到现在才发现这个问题,希望大家在解决一些问题用网上的一些解决方法的时候一定要弄清楚原理和其影响,不要只顾着复制粘贴或者按部就班的进行,一定要边做边想,不然也会容易导致以后出现一些奇奇怪怪的问题。