vscode中文乱码需分三类处理:文件编码错误(如gbk/utf-8不匹配)、终端输出编码不对(powershell/cmd代码页)、字体不支持中文;须分别配置files.encoding、terminal.integrated.env.windows.pythonioencoding及terminal.integrated.fontfamily。

VSCode里中文乱码,不是文件坏了,而是编辑器读错了、写错了、或压根没用对字体——三类问题必须分开处理,混着调只会越调越乱。
右下角点编码名选 Reopen with Encoding 为什么是第一动作
这是最快验证真实编码的方式。VSCode 右下角显示的编码(比如 UTF-8、GBK)只是它当前“怎么读”的假设,不是文件“本来就是啥”。乱码时优先点它,菜单里一定有 Reopen with Encoding:
- 选
GBK:Windows 上记事本保存的 .txt/.py/.bat 文件十有八九是这个,一试就恢复 - 选
GB2312:老系统导出的配置文件常见,和 GBK 兼容但字库略小 - 选
UTF-8 with BOM:某些 Excel 或旧版 Notepad++ 导出的 CSV 会带 BOM,VSCode 默认不认 - 选项灰掉?先按
Ctrl+S保存一下再点,否则 VSCode 认为“没改动”,禁用重载入口
Save with Encoding → utf8 才算真正解决问题
Reopen with Encoding 只是临时换种方式看,Save with Encoding 才把内容按新编码写回磁盘。这一步才是协作中避免别人再乱码的关键:
- 确认用
GBK能正常显示后,立刻点右下角 →Save with Encoding→utf8(注意全小写,不是UTF-8) - 别选
utf8bom:Python import 会失败,Git diff 显示\ufeff,CI 构建报invalid byte sequence in UTF-8 - 如果文件里混了不可见控制字符(比如从微信复制带样式的文字),先复制内容到新文件再
Save with Encoding,避免污染 - 执行后 VSCode 会把这个选择记为该文件的“偏好编码”,下次打开直接按 utf8 读
files.encoding: "utf8" 只管新建文件,不管老文件
在 settings.json 里加 "files.encoding": "utf8",只影响三类情况:
- 新建空文件(
Ctrl+N),右下角必须立刻显示UTF-8才算生效 - 没带 BOM 且从未被打开过的文件
- 工作区里没被单独配置过编码的文件
- 已有文件仍按上次你用什么方式打开它来读——哪怕你改了全局设置,它也坚持用自己记住的
GBK - 值必须写成
utf8(小写、无短横),写成UTF-8、utf8bom或UTF8,VSCode 直接忽略
终端 print("中文") 乱码跟文件编码完全无关
这是 PowerShell / CMD 自身代码页和 Python 输出编码对不上,改编辑器设置毫无作用:
- 临时修复:终端里输
chcp 65001切到 UTF-8 页,再跑 Python - 永久方案:在
settings.json加"terminal.integrated.env.windows": {"PYTHONIOENCODING": "utf8"} - PowerShell 用户还得改
$PROFILE,加一行:[Console]::OutputEncoding = [System.Text.Encoding]::UTF8 - 字体也要支持中文:搜
terminal.integrated.fontFamily,设成"Fira Code", "Microsoft YaHei"这类组合
最易被忽略的是:同一个项目里,.bat 文件得用 gbk 才能双击运行,而 .py 必须用 utf8 才能 import;全局硬设 files.encoding 会顾此失彼,得靠 [batch] 和 [python] 语言 ID 单独配。











