VSCode解决乱码需先点右下角编码名选“Reopen with Encoding”试GBK等编码临时正确显示,再选“Save with Encoding”存为UTF-8完成真转码;切忌未确认原始编码就直接保存,否则会损坏中文。

点状态栏“UTF-8”就能临时修复乱码
看到满屏“锟斤拷”或“文件”,第一反应不是改设置,而是看右下角——那里显示的UTF-8、GBK或Auto就是当前解析方式。直接点击它,选Reopen with Encoding,再挑一个常见中文编码(如GBK、GB18030、UTF-8 with BOM)试试。这个操作不改磁盘文件,只让 VSCode 换个“字典”重新读字节,90% 的显示乱码靠这一步就能立刻恢复正常。
注意:Reopen with Encoding菜单里没有“自动重试”选项;如果选错编码,内容会变得更乱,但关掉再重开就行,不会损坏原文件。
用Save with Encoding永久转码前必须确认原始编码
一旦用Reopen with Encoding找到能正常显示的编码(比如确认是GBK),下一步才是保存:再次点击状态栏编码名 → 选Save with Encoding → UTF-8。这时 VSCode 才会把当前内存里已正确解码的文本,按 UTF-8 编码写回磁盘。
容易踩的坑:
- 没确认原始编码就直接点
Save with Encoding→ 把乱码内容用 UTF-8 保存,原始中文彻底丢失 - 选了
UTF-8 with BOM保存 Python/JS 文件 → 可能触发SyntaxError: Non-UTF-8 code starting with '\xff' - 对无 BOM 的 GBK 文件,VSCode 默认记不住你上次选的编码 → 下次打开仍可能又乱码,需手动重复操作
files.encoding和files.autoGuessEncoding怎么配才不翻车
全局设"files.encoding": "utf8"只影响新建文件和无 BOM/无历史记录的文件;它不会让老 GBK 文件自动变 UTF-8。真正要收敛行为,得关掉自动猜测:
-
"files.autoGuessEncoding": false—— 防止 VSCode 对无 BOM 的中文文件瞎猜成ISO-8859-1或Windows-1252 -
"files.encoding": "utf8"—— 小写utf8,不是UTF-8或utf8bom,这是 VSCode 内部识别的关键字符串 - 这两项建议写进项目根目录的
.vscode/settings.json,避免污染全局设置
改完配置后,已打开的老文件不会自动重载,得手动关闭再打开,或执行一次Reopen with Encoding。
批量转码别依赖 VSCode 插件
所谓“批量编码转换插件”,底层仍是循环调用Reopen with Encoding + Save with Encoding。一旦目录里混着GBK、GB2312、BIG5甚至部分UTF-8文件,插件会静默用统一编码去 reopen,结果就是部分文件内容被二次破坏。
安全做法分两步:
- 先确认真实编码:
file -i *.js(Linux/macOS)、Get-Content -Path a.js -Encoding Byte | Select-Object -First 4(PowerShell 查 BOM 或双字节特征) - 再用命令行工具转:
iconv -f GBK -t UTF-8 input.js -o output.js,验证无误后再覆盖
VSCode 的角色只是查看和单文件修正,不是批量清洗工具。最常被忽略的一点:转完 UTF-8 后,务必检查 BOM —— 多数现代语言(Python/Node.js/ESLint)要求UTF-8 without BOM,而 Windows 记事本需要 BOM 才能正确识别中文。两者不可兼得,得按项目规范选。


















