VSCode中文乱码主因是编码错配,应先右下角点击编码名选“Reopen with Encoding→GBK”验证并恢复显示,再“Save with Encoding→UTF-8”真正转码,切勿乱码时直接保存。

先看 VSCode 底部状态栏的编码标识
打开文件后,右下角会显示当前文件的解码方式,比如 UTF-8、GBK 或 Auto。这不是“文件用了什么编码”,而是 VSCode “**当前按哪种编码去读它**”。如果显示 UTF-8 但文件实际是 GBK 编码(常见于老游戏 INI、某些 C/C++ 工程配置),就会乱码;反之亦然。
常见错误现象:
- 点开一个带中文的
.ini文件,直接显示“涓枃”“锟斤拷”之类 - 底部状态栏明明写着
GBK,但中文仍显示为方块或问号(说明字体不支持) - 改完代码保存后,别人拉下来发现注释全变成乱码(你用 UTF-8 保存了原为 GBK 的文件)
操作建议:
- 别急着保存——乱码时按
Ctrl+S会用当前解码方式反向写回,可能永久破坏原始字节 - 右键文件 → “通过编码重新打开” → 逐个试
GBK、UTF-8 with BOM、ISO 8859-1,哪个能正常显示就选哪个 - 确认后点击右下角编码名 → “保存为编码” → 选目标编码(如转成
UTF-8)再保存
终端里 chcp 输出是 936?那不是文件问题,是终端没切 UTF-8
VSCode 集成终端(PowerShell / cmd)默认用 Windows 传统代码页,chcp 输出 936 就代表 GBK。此时哪怕 Python 脚本里写了 print("中文"),终端也会把 UTF-8 字节当 GBK 解,显示乱码。
验证方式:
- 在终端里直接运行
chcp,看输出是不是活动代码页: 936 - 再运行
python -c "import sys; print(sys.stdout.encoding)",如果输出cp936,说明 Python 进程也卡在 GBK 里
必须同步做三件事:
- 在
settings.json中配置terminal.integrated.profiles.windows,让 PowerShell 启动时自动执行chcp 65001 - 加环境变量
PYTHONIOENCODING=utf8(Windows 系统变量或 VSCodesettings.json的terminal.integrated.env.windows) - 确保终端字体支持中文,比如设
terminal.integrated.fontFamily为'Consolas', 'Microsoft YaHei'
输出窗口(Debug Console / Python Terminal)乱码,大概率是 PYTHONIOENCODING 没生效
和集成终端不同,Debug Console 不走 chcp,它完全依赖 Python 进程启动时的环境变量。即使你在系统里设了 PYTHONIOENCODING=utf8,VSCode 启动调试器时若没透传过去,sys.stdout.encoding 仍可能是 cp936。
检查方法:
- 在 Debug Console 里运行
import sys; sys.stdout.encoding,结果不是utf-8就说明变量没传进去 - 如果只在终端里正常、Debug Console 仍乱码,基本锁定是这个原因
解决路径:
- 优先在 VSCode 的
settings.json里加:"terminal.integrated.env.windows": { "PYTHONIOENCODING": "utf8" } - 不要只设系统环境变量——VSCode 启动时未必加载,尤其从开始菜单启动时
- 避免使用
set PYTHONIOENCODING=utf8手动设置,它只对当前终端子进程有效,不影响 Debug Console
右键菜单“通过 Code 打开”中文变问号,大概率是注册表被 HiBit Uninstaller 等工具改坏了
Windows 11 下,VSCode 右键菜单中文乱码不是编码问题,而是注册表项值被错误地以 ANSI 方式写入 Unicode 字段。典型触发场景:装完 VSCode 后又用 HiBit Uninstaller 扫描注册表,它会把原本正常的 Unicode 字符串值(如 @="通过 Code 打开")强行转成 ANSI 存储,导致 Win11 读取时显示为 ???。
临时修复方法(无需重装):
- 用
regedit打开HKEY_CLASSES_ROOT\*\shell\VSCode和HKEY_CLASSES_ROOT\Directory\shell\VSCode - 找到
LocalizedString或默认值,右键 → 修改 → 类型选“REG_SZ”,输入法切中文,手动重输一遍中文文字 - 重启资源管理器(任务管理器 → 重启
explorer.exe)或直接重启系统
注意:别用第三方注册表清理工具碰这些项,它们对 Windows 11 的 Unicode 注册表支持不完整,改一次坏一次。











