VSCode中文乱码主因是编码不匹配,非文件损坏;先右下角点“UTF-8”选Reopen with Encoding→GBK临时恢复,再Save with Encoding→UTF-8永久转码,终端乱码需设PYTHONIOENCODING=utf8及中文字体。
立即进入“告别乱码!智能修复工具!☜☜☜☜☜点击进入”;

VSCode 中文乱码不是文件损坏,而是编辑器用错了编码去读——绝大多数情况只需右下角点一下、选个编码就能立刻恢复,不用改配置、不需重装。
右下角点“UTF-8”后选 Reopen with Encoding 试 GBK
这是最快速有效的第一步。Windows 上用记事本保存的中文文件,90% 实际是 GBK 编码,但 VSCode 默认按 utf8 解码,结果全是方块或问号。
- 打开乱码文件 → 点右下角显示的编码名(如
UTF-8)→ 选Reopen with Encoding→ 优先试GBK(比GB2312兼容性更好) - 若文字立刻变正常,说明找对了;若更乱,关掉文件重开,再试其他选项
-
Reopen with Encoding是安全操作:只改本次读取方式,不写入、不破坏原文件 - 别依赖
Auto-detect—— VSCode 的files.autoGuessEncoding对 GBK 基本猜不准,常误判为ISO-8859-1或windows1252
确认编码后用 Save with Encoding 转成 UTF-8
临时恢复显示只是开始,真正要解决协作和 Git 提交问题,得把文件内容永久转成 utf8(注意:不是 utf8bom,VSCode 默认就是无 BOM 的 UTF-8)。
- 内容正常显示后,再次点击右下角编码名 → 选
Save with Encoding→ 选UTF-8 - 保存后文件被重写为 UTF-8,后续打开不再乱码,Git diff 也干净
- 如果保存后反而乱码,说明原文件可能混用了编码(比如部分段落是 GBK、部分是 UTF-8),此时不要覆盖原文件,先复制内容到新文件再另存为
UTF-8 - 某些旧工具(如 Excel 导出 CSV)会生成带 BOM 的 UTF-8,VSCode 读它会显示
UTF-8 with BOM,这种可直接Save with Encoding→UTF-8去掉 BOM,更通用
files.encoding 设为 utf8 只影响新建文件
很多人设了 "files.encoding": "utf8" 却发现老文件还是乱码——因为这个配置只对「全新创建的空文件」生效,对已存在的文件完全没作用。
- 新建文件时右下角显示
UTF-8,说明该设置已生效;但打开一个旧.txt或.py,VSCode 仍按文件实际编码或 BOM 判断,不会强制套用utf8 - 想让某类文件(如所有
.txt)默认用 GBK 打开,得配files.associations:{"*.txt": "gbk"} -
files.encoding的值必须是小写utf8,写成UTF-8或utf-8都无效 - 全局禁用自动猜测:
"files.autoGuessEncoding": false,避免它中途偷偷切编码,导致你编辑一半文字突然变方块
终端 print("中文") 乱码跟文件编码无关
这是 Windows 终端(CMD/PowerShell)代码页和 Python 输出编码不匹配的问题,改 VSCode 文件编码设置完全没用。
- 在终端里运行
chcp,如果输出活动代码页: 936,那就是根源 —— 936 = GBK,而 Python 默认按 UTF-8 输出 - 临时修复:
chcp 65001(切换到 UTF-8 代码页),但新开终端就失效 - 永久修复:在
settings.json加"terminal.integrated.env.windows": {"PYTHONIOENCODING": "utf8"},并确保terminal.integrated.defaultProfile.windows设为PowerShell - 字体也要支持中文:在设置里搜
terminal integrated font family,设成"Fira Code, Microsoft YaHei"这类组合
真正容易被忽略的是:同一项目里不同文件可能用不同编码(比如旧配置是 GBK,新脚本是 UTF-8),靠全局设置硬套只会顾此失彼。与其赌自动识别,不如养成习惯——打开乱码文件第一反应是右下角点一下,试 GBK,再 Save with Encoding → UTF-8。这一步做完,95% 的乱码问题就清零了。


















