vscode中文乱码主因是编码不匹配,须先右下角选gbk重开验证,再save with encoding→utf8转码;终端乱码需设terminal.integrated.env.windows: {"pythonioencoding": "utf8"};禁用autoguessencoding并慎配files.associations。

VSCode 里中文显示成方块、问号或 \u4f60\u597d,不是文件坏了,而是编辑器读错了编码——必须先确认真实编码,再决定怎么改。
右下角点“UTF-8”选 GBK 重开,是最快验证方式
Windows 上用记事本保存的 .py、.txt、.bat 文件,90% 是 GBK(即 CP936)编码,但 VSCode 默认按 UTF-8 解码,必然乱码。点击右下角状态栏的编码名(比如显示 UTF-8),选择 Reopen with Encoding → GBK,如果中文立刻恢复正常,就坐实了问题根源。
- 别试
GB2312:字库太小,遇到生僻字仍会乱;GBK覆盖更全,优先试它 - 选项灰掉?先按
Ctrl+S保存一下再点,否则 VSCode 认为“没改动”,禁用重载入口 -
Reopen with Encoding不改文件内容,只改本次读法——它只是诊断工具,不是修复动作
Save with Encoding → utf8 才算真正转码
确认 GBK 能正常显示后,立刻点右下角 → Save with Encoding → 选 utf8(注意全小写、无短横、无 BOM)。这一步把文件内容按 UTF-8 字节覆写进磁盘,协作时别人打开才不会二次乱码。
- 绝对不要选
utf8bom:Python 导入会失败(首字符变成\ufeff),Git diff 显示异常符号,CI 构建可能报invalid byte sequence in UTF-8 - 如果文件是从微信、网页复制粘贴的,可能混有不可见样式字符(如富文本控制符),建议先复制内容到新文件,再
Save with Encoding → utf8 - VSCode 会把这个选择记为该文件的“偏好编码”,下次打开直接按
utf8读,不用再手动切
files.encoding: "utf8" 只影响新建文件,老文件不买账
在 settings.json 里加 "files.encoding": "utf8",只管三类情况:新创建的空文件(Ctrl+N)、从未被打开过的无 BOM 文件、工作区里没被单独配置过编码的文件。而已有文件仍按它自己记住的编码读——哪怕你改了全局设置,它也坚持用上次你用 GBK 打开的方式。
- 值必须写成
utf8(小写、无短横),写成UTF-8、utf8bom或UTF8,VSCode 直接忽略 - 老项目含
.bat或.reg文件?别全局设"files.encoding": "utf8",它们依赖 GBK 执行,硬设会导致双击运行报错——改用"files.associations": {"*.bat": "gbk"}单独配 -
files.autoGuessEncoding建议关掉:中文短文本或数字+中文混合时误判率极高,开着容易编辑中途文字突然变乱码
终端 print("中文") 乱码,和编辑器设置完全无关
这是 PowerShell / CMD 自身代码页和 Python 输出编码对不上,改 VSCode 的 files.encoding 或字体毫无作用。临时方案是在终端里输 chcp 65001 切到 UTF-8 代码页,再运行 Python;永久方案是在 settings.json 加:
"terminal.integrated.env.windows": {
"PYTHONIOENCODING": "utf8"
}
- 这个配置只生效于 VSCode 内置终端,不影响系统级终端
- Mac/Linux 用户注意:
terminal.integrated.env.windows是 Windows 专用键,跨平台需用terminal.integrated.env.linux或terminal.integrated.env.osx - 字体不支持中文也会导致显示异常,但那是另一条链路——确保
terminal.integrated.fontFamily包含中文字体名(如"Cascadia Code, Microsoft YaHei")
最常被忽略的一点:VSCode 对每个文件的记忆是独立的。一个 .py 文件上次用 GBK 打开过,它就永远记住 GBK,除非你主动 Save with Encoding → utf8 覆写。全局设置改得再漂亮,也撬不动单个文件的“固执记忆”。











