VSCode悬浮提示乱码需同时满足:locale.json设为{"locale":"zh-cn"}、完全退出并重启VSCode、配置支持中文的editor.fontFamily;三者缺一不可,与文件编码、终端设置无关。

VSCode悬浮提示(Hover)乱码,基本不是文件编码问题,而是语言包、locale配置或字体渲染链路中断导致的——它发生在编辑器 UI 层,和你打开什么文件无关。
检查 locale.json 是否设为 zh-cn 并完全重启
悬浮提示文字来自 VSCode 内置的本地化资源包,由 locale.json 控制。设错或没生效,就会显示 Unicode 转义符(如 \u4f60\u597d)或方块。
- 按
Ctrl + Shift + P输入Configure Display Language,回车打开locale.json - 确认内容是
{"locale": "zh-cn"},不是"zh"、"zh-CN"或空值 - 改完后必须完全退出 VSCode:关闭所有窗口 + 右键托盘图标选
Quit,再重开;仅Developer: Reload Window无效 - 若用 Remote-SSH/WSL,
locale.json必须放在远程机器的~/.vscode-server/data/Machine/下对应路径
terminal.integrated.env.windows 不影响 Hover,别配错地方
有人误把 PYTHONIOENCODING=utf8 或 chcp 65001 加到终端环境里,指望它修 Hover —— 这毫无作用。Hover 是 Electron 渲染进程直接读取 locale 包生成的,不经过终端、不走 stdout/stderr、也不受任何 shell 环境变量影响。
- 删掉 settings.json 里类似
"terminal.integrated.env.windows": {"PYTHONIOENCODING": "utf8"}的配置(它只对集成终端输出有效) - Hover 乱码时去调终端设置,属于方向性错误,越配越乱
- 真正要查的是主进程是否加载了正确的语言资源:打开命令面板,输入
Developer: Toggle Developer Tools,在 Console 里搜locale,看有没有报Failed to load locale zh-cn
字体缺失会导致中文显示为空心框或小方块
即使 locale 正确、语言包已安装,如果系统缺少中文字体或 VSCode 没选对 fallback 字体,Hover 里的中文仍会渲染失败,表现为“□”或极细空心字。
- 在 settings.json 中显式指定中文字体:
"editor.fontFamily": "'Microsoft YaHei', 'PingFang SC', 'Noto Sans CJK SC', monospace" - 确保系统已安装
Microsoft YaHei(Win10/11 默认有),或手动安装Noto Sans CJK SC(开源免费) - 不要只写
"editor.fontFamily": "monospace"—— 多数等宽字体不带完整中文字库 - 验证方式:打开一个含中文注释的 Python 文件,把鼠标悬停在函数名上,看参数说明里的中文是否正常
Hover 乱码最常被当成“编码问题”去折腾文件保存格式或 files.encoding,但其实它压根不碰磁盘文件。核心就三点:locale.json 写对、VSCode 完全重启、字体链能兜住中文。漏掉任意一环,都会卡在“明明装了中文包却还是乱码”的死循环里。


















