vscode中文乱码需先右下角点编码名选reopen with encoding→gbk验证,确认显示正常后立即save with encoding→utf8(无bom)覆写文件,再配置"files.autoguessencoding": false和"files.encoding": "utf8"确保稳定。

直接点右下角编码名,选“Reopen with Encoding” → GBK 或 UTF-8,90% 的乱码当场恢复;但仅靠这一步不能永久修复,必须紧接着执行“Save with Encoding” → utf8(不带 BOM)才算真正解决。
右下角点“UTF-8”没反应?先保存再点
VSCode 默认禁用未修改文件的重载入口——这不是 bug,是设计逻辑。状态栏菜单灰掉、选项不可选,大概率是因为你还没保存过这个文件。
- 按
Ctrl+S手动保存一次(哪怕没改内容),状态变成“已修改”,右下角编码名立刻可点击 - 如果点完“Reopen with Encoding”后内容更乱,别反复试:关掉文件 → 重新打开 → 换另一个编码重试
- 优先试
GBK,不是GB2312:前者覆盖字库更全,Windows 记事本、旧版 Excel 导出的.py/.txt基本都用它
“Reopen with Encoding”和“Save with Encoding”根本区别在哪
这两个操作在 VSCode 里完全独立,作用对象也不同:
-
Reopen with Encoding是只读动作:只改变当前会话的内存解码方式,不写磁盘、不改原文件,安全可反复试 -
Save with Encoding是写入动作:把当前编辑器里的 Unicode 内容,按指定编码重新序列化并覆写到磁盘。选错会真·损坏文件 - Python 报
SyntaxError: Non-UTF-8 code starting with '\xef'?八成是你点了UTF-8 with BOM——务必手动选纯UTF-8(不带“with BOM”字样)
为什么改了 "files.encoding": "utf8" 老文件还是乱码
这个配置只影响两件事:新建空文件、未被打开过的无 BOM 文件。对已有文件完全无效。
- VSCode 会忠实记住你上次用什么编码打开它,并优先复用——它不看全局设置,只认你亲手点过的那一次
Save with Encoding - 值必须写成
utf8(全小写、无短横、无 BOM),写成UTF-8或utf8bom会被静默忽略 - 老项目混着
.bat或.reg?别全局硬设,改用"files.associations": {"*.bat": "gbk"}单独配,否则双击运行就报错
真正容易被忽略的是:VSCode 对每个文件的编码记忆是持久且独立的。想一劳永逸,不是调配置,而是对关键文件逐个执行 Save with Encoding → utf8,把它“固化”为该文件的偏好编码。











