vscode 中文乱码的根源是 files.autoguessencoding 默认启用导致编码被错误猜测为 gbk,必须同时设置 "files.encoding": "utf8"、"files.autoguessencoding": false 和 "files.savewithbom": false 才能彻底解决。

VSCode 里没有“中文编码”这种东西,“中文默认编码”其实是误称——你要的只是让新建文件、打开无BOM中文文件时统一用 UTF-8(无 BOM)读写,避免右下角显示 GBK 或 ISO-8859-1 导致乱码。
为什么改了 files.encoding 还是乱码?
因为 VSCode 默认开启 files.autoGuessEncoding,它会根据文件字节模式“猜”编码。一个没 BOM 的中文文本,大概率被猜成 GBK(尤其在 Windows 上),完全无视你设的 "files.encoding": "utf8"。
- 右下角状态栏显示
GBK或ISO-8859-1就是典型表现 - 这个猜测结果会被缓存,下次打开同一文件直接沿用,不会重新读配置
- 即使你只改了
files.encoding,只要files.autoGuessEncoding是true(默认值),就等于没改
必须同时关闭自动猜测并设 UTF-8
打开 settings.json(Ctrl + Shift + P → Preferences: Open Settings (JSON)),加这两行:
{
"files.encoding": "utf8",
"files.autoGuessEncoding": false
}
-
utf8是 VSCode 内部标识,等价于 UTF-8 无 BOM;别写UTF-8或utf8bom,后者会插入 BOM,Python/Shell 脚本可能报SyntaxError: Non-UTF-8 code starting with '\xff' -
files.autoGuessEncoding: false是关键开关,关掉它,VSCode 才会老老实实按files.encoding读新文件、存所有文件 - 全局设置只对「未保存的新建文件」和「保存动作」生效;已有文件仍需手动处理
已有乱码文件怎么救?
右下角点击当前编码(比如显示 GBK),选「通过编码重新打开」→ UTF-8,确认后立刻点「保存」——这步必须做,否则下次打开还是 GBK。
- 如果文件已保存过,VSCode 会记住上次选择的编码,不依赖
files.encoding - 不要点「以编码保存」再选 UTF-8,那只是另存为,原文件没变
- 批量修复可用插件
Force Encoding,但手动点一次更稳妥,避免误操作
要不要禁用 BOM?
要。加这一行到 settings.json:
"files.saveWithBOM": false
- BOM(
\xef\xbb\xbf)对 Python、Node.js、Git 等工具不友好,Shebang 行(如#!/usr/bin/env python3)开头有 BOM 会直接报错 - Windows 记事本爱加 BOM,但 VSCode 默认不加,也不该迁就
- 除非你明确对接某个老旧 Windows 工具(如 PowerShell 5.1),否则一律禁用
真正起作用的就这三行:"files.encoding": "utf8"、"files.autoGuessEncoding": false、"files.saveWithBOM": false。其他任何“按语言设编码”“工作区覆盖”都是锦上添花,不是解决乱码的前提。











