改了files.encoding仍乱码是因为files.autoGuessEncoding默认开启,会覆盖配置;必须同时设"files.encoding": "utf8"和"files.autoGuessEncoding": false,且新建文件需先Save with Encoding→utf8再编辑,已有GBK文件须先Reopen with Encoding→GBK确认后再Save with Encoding→utf8转码。

为什么改了 files.encoding 还是乱码?
因为 VSCode 默认开启 files.autoGuessEncoding,它会根据文件字节内容“猜”编码(Windows 下大概率猜成 GBK),直接覆盖你设的 "files.encoding": "utf8"。右下角显示 GBK 或 ISO-8859-1 就是典型表现——这不是配置没生效,而是被自动探测逻辑绕过了。
必须同时禁用猜测、指定编码:
-
"files.encoding": "utf8"(注意全小写,不是"UTF-8"或"UTF8") "files.autoGuessEncoding": false
这两行缺一不可,否则所谓“默认 UTF-8”只是假象。
新建 Python 文件仍存为 GBK 怎么办?
即使配置正确,Windows 系统区域设为中文时,VSCode 新建文件粘贴中文后直接保存,底层可能仍以 GBK 写入字节——导致文件标称 UTF-8,实际存的是 GBK 字节,下次打开就崩。
立即学习“Python免费学习笔记(深入)”;
临时绕过方法:
- 新建文件后,先点右下角编码 →
Save with Encoding→ 选UTF-8(不是UTF-8 with BOM) - 再粘贴中文、编辑、保存
永久解决靠上面两行配置,但首次新建后手动存一次 UTF-8 是最稳妥的启动步骤。
已有 Python 文件全是 GBK 编码,怎么批量转 UTF-8?
不能直接全局设 "files.encoding": "utf8" 然后点 Save with Encoding ——那样会把 GBK 字节按 UTF-8 解码再存,结果是双乱码。
正确流程:
- 逐个打开文件,右下角点当前编码(如
GBK)→Reopen with Encoding→ 选GBK(确认中文正常显示) - 再点右下角 →
Save with Encoding→ 选UTF-8(确保不带 BOM) - 保存后,状态栏会变成
UTF-8,且文件真实字节已转换
别跳过 Reopen with Encoding 这步,它是安全验证真实编码的唯一方式。
[python] 语言级编码配置有必要吗?
没必要单独配。VSCode 的 files.encoding 是全局生效的,"[python]": { "files.encoding": "utf8" } 这种写法无效——files.encoding 不支持语言级覆盖,只认用户级或工作区级顶层配置。
但如果你项目里混着必须用 GBK 的 .bat 或 .reg 文件,可以用 files.associations 单独指定:
"files.associations": {
"*.bat": "gbk",
"*.reg": "gbk"
}
这样 Python 文件走全局 utf8,批处理文件仍能正确读取,互不干扰。


















