解决代码文件中的乱码问题

解决代码文件中的乱码问题

你有没有遇到过:代码在 Visual Studio 中完美正常,在 VS Code 一打开却全是乱码?明明都是微软出品,却总在编码上“闹别扭”。别急,这个问题本质上是字符编码不一致,下面来详细说说。

1. 乱码的本质:编码不匹配

  • Visual Studio 默认保存为 GBK(代码页 936)或系统本地编码。
  • VS Code 默认以 UTF-8 无 BOM 方式解读文件。

当文件中含有中文或非 ASCII 字符时,VS Code 用 UTF-8 去解析 GBK 编码的文件,自然就乱码了。

2. 解决方案一:手动保存为 UTF-8 带 BOM

  1. 在 Visual Studio 中打开文件选择另存为。
  2. 点击保存按钮旁的下拉箭头 → “带编码保存”(Save with Encoding)。
  3. 选择 Unicode (UTF-8 带签名) - 代码页 65001
  4. 保存。

处理完后,VS Code 打开即正常显示。

3. 解决方案二:设置默认编码(推荐)

什么?你说你用自动保存,每一次都要另存为太麻烦了。没关系,可以:

  1. 在 Visual Studio 顶部搜索框输入“使用特定编码保存文件”。
  2. 进入设置,勾选该选项。
  3. 将编码设为 Unicode (UTF-8 带签名) - 代码页 65001

以后所有文件自动以此编码保存,再也不用手动操作。

4. 为什么必须带 BOM?无 BOM 还是会乱码?

BOM(Byte Order Mark)是文件开头的三个隐藏字节 EF BB BF,作用是明确宣告“我是 UTF-8”。

  • 无 BOM:编辑器只能“猜”编码,Windows 系统常猜成 GBK → 中文乱码。
  • 带 BOM:强制声明编码,几乎所有编辑器(包括 VS Code、记事本)都能正确识别。

因此,在 Windows 环境下,UTF-8 必须带 BOM 才能最大程度避免误判。

5. 行尾序列也要注意:推荐 CRLF

换行符也有两种标准:

  • CRLF (\r\n):Windows 原生格式,Visual Studio 默认使用。
  • LF (\n):Linux/macOS 标准。

用 LF 在 Windows 上可能导致:

  • 旧版记事本显示为一行。
  • Git 提示警告(虽可关闭,但烦人)。

所以总结一下:

  • Windows 最佳组合UTF-8 带 BOM + CRLF。
  • Linux 最佳组合UTF-8 无 BOM + LF(系统原生,更规范)。