【C++】VS2019 中文输出乱码 以及 该文件不能在当前代码页(936)中表示的字符 的解决办法

文章目录


前言

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

  • VS2019 控制台中文输出乱码
    中文乱码

  • 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
    该文件包含不能在当前代码页(936)中表示的字符

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

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

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

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

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

解决方案

于是我卸载了这个扩展。

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

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

结语

非常感谢大家的阅读,欢迎在评论区留言讨论!