必须同时设置"files.encoding":"utf8"、"files.autoguessencoding":false和"files.savewithbom":false,三者缺一不可;否则vscode会因自动猜测编码(如将无bom中文文件误判为gbk)而覆盖手动配置,导致乱码持续存在。

必须同时关闭 files.autoGuessEncoding、设 "files.encoding": "utf8"、禁用 files.saveWithBOM,三者缺一不可。只改其中一项,乱码照旧。
为什么改了 files.encoding 还是乱码?
因为 VSCode 默认开启 files.autoGuessEncoding,它会根据文件字节特征“猜”编码——一个没 BOM 的中文文本,在 Windows 上大概率被猜成 GBK,完全无视你设的 "files.encoding": "utf8"。右下角状态栏显示 GBK 或 ISO-8859-1 就是典型表现。
- 这个猜测结果会被缓存,下次打开同一文件直接沿用,不会重新读配置
-
utf8是 VSCode 内部标识,等价于 UTF-8 无 BOM;别写UTF-8或utf8bom,后者会插入 BOM,Python/Shell 脚本可能报SyntaxError: Non-UTF-8 code starting with '\xff' - 全局设置只对「未保存的新建文件」和「保存动作」生效;已有文件仍需手动处理
怎么配才真正起作用?
打开 settings.json(Ctrl + Shift + P → Preferences: Open Settings (JSON)),加这三行:
{
"files.encoding": "utf8",
"files.autoGuessEncoding": false,
"files.saveWithBOM": false
}
-
"files.encoding": "utf8":强制新建文件和保存时统一用 UTF-8(无 BOM) -
"files.autoGuessEncoding": false:关掉自动猜测,VSCode 才会老老实实按上面那条执行 -
"files.saveWithBOM": false:避免 BOM 污染,尤其对 Python Shebang 行、Git diff、CI 脚本很关键
已有乱码文件怎么救?
右下角点击当前编码(比如显示 GBK),选「通过编码重新打开」→ UTF-8,确认后立刻点「保存」——这步必须做,否则下次打开还是 GBK。
- 不要点「以编码保存」再选
UTF-8,那只是另存为,原文件没变 - 如果文件已保存过,VSCode 会记住上次选择的编码,不依赖
files.encoding - 批量修复可用插件
Force Encoding,但手动点一次更稳妥,避免误操作
真正容易被忽略的是:终端乱码和编辑器乱码是两回事。即使这三行全配好了,VSCode 集成终端仍可能因系统代码页是 GBK 而输出乱码——得单独配 terminal.integrated.profiles.windows 或开系统级 UTF-8 支持。











