vscode中文注释显示方块是unicode高亮功能误判所致,关闭editor.unicodehighlight.invisiblecharacters等三项设置即可解决,与字体无关。

VSCode中文注释显示方块,99%不是字体问题,而是 Unicode 高亮功能误判汉字为“可疑字符”——关掉 editor.unicodeHighlight.invisibleCharacters 就能立刻恢复。
为什么注释里中文会变方框?
这是 VS Code 1.64+ 引入的 editor.unicodeHighlight 功能在作祟。它默认把所有非 ASCII 字符(包括中文、日文、emoji)标为“需高亮”的非常规字符,渲染时用方框包裹,方便排查不可见控制符。但对中文注释来说,纯属误伤。
鼠标悬停在方框上,通常会显示类似 U+4F60(“你”的 Unicode 码点)的提示,这就是确认信号。
- 只影响注释、字符串字面量等文本内容,不影响编辑器界面或终端
- 和
editor.fontFamily无关——即使你用了Microsoft YaHei,方框照常出现 - 不报错、不崩溃,是“静默高亮”,容易被当成字体故障
怎么关掉这个方框高亮?
最直接有效的方式是禁用三项高亮开关:
- 打开设置(
Ctrl+,),搜索editor.unicodeHighlight.invisibleCharacters→ 设为false - 同样搜
editor.unicodeHighlight.nonBasicASCII→ 设为false - 再搜
editor.unicodeHighlight.ambiguousCharacters→ 设为false
或者一步到位,在 settings.json 中加这段:
{
"editor.unicodeHighlight.invisibleCharacters": false,
"editor.unicodeHighlight.nonBasicASCII": false,
"editor.unicodeHighlight.ambiguousCharacters": false
}
改完无需重启,保存即生效。方框会立刻消失,中文恢复原样。
不想全关?那就白名单放行中文
如果你仍想保留对控制字符(如零宽空格、BOM)的高亮,只屏蔽中文,就用白名单机制:
- 搜索
editor.unicodeHighlight.allowedLocales - 设为
["zh-hans"](简体中文)或["zh-hant"](繁体中文)
注意:值必须是数组格式,写成 "zh-hans"(字符串)会失效。VS Code 会据此跳过对应语言区域的 Unicode 字符高亮。
这个选项对多语言项目更友好,比如中英文混排注释,英文标点仍可被高亮,中文则完全透明。
别被“字体配置”带偏了方向
很多人一看到方框就去折腾 editor.fontFamily,甚至重装字体、改系统 DPI,结果徒劳无功。因为:
- 方框是 SVG 图形层叠加渲染的,不是字体缺失导致的“□”占位符
- 就算你把
editor.fontFamily改成"SimSun, monospace",方框依然存在 - 真正决定是否画方框的是
editor.unicodeHighlight系列开关,不是字体链
唯一需要动字体的场景,是编辑器界面本身显示“口”或“?”——那才是字体或编码问题。而注释里的方框,几乎全是高亮逻辑惹的祸。











