VSCode打开GBK文件乱码的根本原因是默认用UTF-8读取GBK编码文件;应先右下角选Reopen with Encoding→GBK验证,再Save with Encoding→utf8(小写无BOM)彻底解决。

VSCode 打开 GBK 文件乱码,根本原因不是文件坏了,而是 VSCode 默认用 utf8 去读一个实际是 gbk(即 CP936)编码的文件——它没猜错,是压根没打算猜。
右下角点 UTF-8 → Reopen with Encoding → GBK 是最快验证动作
这是唯一可靠、零风险的第一步。Windows 上用记事本保存的 .txt、.py、.bat 文件,90% 以上默认就是 gbk 编码,但 VSCode 不会自动识别它。
- 点击右下角状态栏显示的编码名(比如
UTF-8),弹出菜单后选Reopen with Encoding - 依次试
GBK、GB18030(不推荐GB2312,字库太窄) - 只要中文立刻变正常,就确认是
gbk编码;这个操作不改文件一字节,纯属“换种方式看” - 如果选项灰掉,先按
Ctrl+S保存一下再点——VSCode 认为“未修改”时会禁用重载入口
Save with Encoding → utf8 才算真正解决乱码
只靠 Reopen with Encoding 只能临时看,协作、Git 提交、CI 构建都会继续崩。必须把内容真正转成 utf8 写回磁盘。
- 确认用
GBK能正常显示后,再次点击右下角编码名 →Save with Encoding→ 选utf8 -
注意:必须写成
utf8(全小写、无短横、无 BOM),写成UTF-8、UTF8或utf8bom,VSCode 直接忽略 - 别选
utf8bom:Python 会把\ufeff当首字符导致import失败,Git diff 里也会冒出异常符号 - 如果文件是从微信、网页复制粘贴来的,建议先复制内容到新文件再
Save with Encoding,避免不可见控制字符污染
files.encoding: "utf8" 只影响新建文件,老文件不买账
在 settings.json 里加 "files.encoding": "utf8",对已存在的文件完全无效。它只管三件事:
- 新建空文件(
Ctrl+N)右下角是否立刻显示UTF-8 - 从未被打开过、且没带 BOM 的文件
- 工作区里没被单独配置过编码的文件
- 已有文件仍按它上次被你用什么方式打开来读——哪怕你改了全局设置,它也坚持用自己记住的
gbk
所以,想让某个旧 .reg 或 .bat 总是用 gbk 打开,得用语言关联配置:"files.associations": {"*.bat": "gbk"},而不是硬套全局 utf8。
autoGuessEncoding 设为 false 才稳
VSCode 默认关着 files.autoGuessEncoding,但很多人开了想“省事”。结果是:短文本、数字+中文混合、无 BOM 的 gbk 文件,基本都被误判成 ISO-8859-1 或 windows1252,一打开就乱码。
- 打开命令面板
Ctrl+Shift+P→ 输入Preferences: Open Settings (JSON) - 加一行:
"files.autoGuessEncoding": false - 保存即生效,无需重启;关掉之后,VSCode 完全依赖你设的
files.encoding或文件自带 BOM,行为可预期
真正麻烦的从来不是“怎么转码”,而是转完之后别人 Git 拉下来还是乱码——那说明你漏掉了终端或 Git 自身的编码配置,这两块和编辑器设置完全无关,得另起炉灶调。











