必须配置PYTHONIOENCODING=utf-8,因Windows控制台默认代码页为GBK(chcp 936),而Python默认UTF-8输出,导致调试控制台解码错位出现“浣犲ソ”或UnicodeEncodeError;需在launch.json对应Python调试配置的env中添加该变量并重启调试会话。

调试控制台中文乱码:必须配 PYTHONIOENCODING
VSCode 调试控制台(Debug Console)显示中文为“浣犲ソ”或直接报 UnicodeEncodeError: 'gbk' codec can't encode character,根本不是字体或界面语言问题,而是 Python 进程启动时没拿到 UTF-8 编码指令。
Windows 下 cmd 默认代码页是 936(GBK),而 Python 3 默认用 UTF-8 字符串,但 stdout 缓冲区仍按终端代码页编码——这一步断在进程启动瞬间,改 editor.fontFamily 或重装语言包完全无效。
- 打开
.vscode/launch.json,在你要调试的配置里加"env": {"PYTHONIOENCODING": "utf-8"} - 确保该配置是用于 Python(即
"type": "python"),不是 Node.js 或其他调试器 - 不要写成
UTF8或UTF-8大写变体——utf-8小写连字符最稳,Python 官方文档明确接受此写法 - 改完必须重启调试会话(Stop + F5),仅重载窗口不生效
输出窗口(Output Panel)中文乱码:改 tasks.json 的 options.env
当你用 Ctrl+Shift+B 运行自定义任务(比如 python build.py 或 npm run dev),中文出现在“输出”面板而非调试控制台,这时乱码源头是 task runner 启动子进程时的环境继承机制。
它不读 files.encoding,也不受右下角“重新以编码打开”影响——那个只管编辑器里打开的文件。
- 打开
.vscode/tasks.json - 在对应
task下添加"options": {"env": {"PYTHONIOENCODING": "utf-8"}} - 如果是 Windows 上跑 CMD 命令,可额外加
"shell": {"args": ["/c", "chcp 65001 > nul &&"]},但优先用PYTHONIOENCODING - Linux/macOS 用户建议同时加
"LANG": "zh_CN.UTF-8",避免某些工具(如gettext) fallback 到 C locale
编辑器里中文注释/字符串正常,但输出还是乱码?检查是否被 BOM 拦截
有些编辑器(如旧版 Notepad++)保存 UTF-8 文件时默认带 BOM,Windows 下 CMD/PowerShell 会把 BOM 当作非法字节头直接截断后续内容,导致脚本执行一半就停,print 看不到、也没报错——你只看到空输出或极短乱码。
- 用 VSCode 打开你的 Python 文件,看右下角状态栏是否显示
UTF-8 with BOM - 点击它 → 选 “Save with Encoding” → 选
UTF-8(不含 BOM) - 尤其注意
tasks.json或 shell 脚本本身——如果它们带 BOM,整个任务可能静默失败 - 验证方法:在
tasks.json的args里临时加"echo hello 中文",看输出窗口是否真能打出“中文”二字
字体设置只解决“显示不出来”,不解决“解码错误”
editor.fontFamily 配了 'Microsoft YaHei', monospace 却还是乱码?说明字形渲染层没问题,问题出在字节流到达渲染层之前就被错误解码了。
调试控制台用的是编辑器渲染引擎,所以它认 editor.fontFamily;但集成终端(Ctrl+`)用的是另一套,它只认 terminal.integrated.fontFamily——混用会白忙活。
- 确认
editor.fontFamily包含至少一个中文字体,且用英文逗号分隔,例如:"'Fira Code', 'Microsoft YaHei', monospace" - 不要在
editor.fontFamily里写SimSun单独一项——它在 macOS/Linux 上不存在,会导致整条字体链失效 - 如果已配对字体但仍见方框(□),才是字体问题;如果见“涓?枃”“浣犲ソ”,一定是编码没对上


















