vscode 中文乱码主因是字体配置不当而非编码错误;需分别设置 editor.fontFamily 和 terminal.integrated.fontFamily 为兼容中文字体组合,并确保文件编码为 UTF-8(无 bom)。
vscode 中文显示乱码,通常不是编码格式错了,而是字体配置没跟上——尤其在 macos 和 linux 上,系统默认中文字体可能未被 vscode 识别或优先级太低;windows 虽自带宋体/微软雅黑,但某些终端或注释场景仍会 fallback 到不支持中文的等宽字体。
检查并设置 editor.fontFamily
VSCode 编辑器内中文乱码,大概率是 fontFamily 没指定兼容中文字体。打开设置(Ctrl+, / Cmd+,),搜索 font family,找到 Editor: Font Family,填入以下推荐组合:
- macOS:
'SF Mono', 'PingFang SC', 'Hiragino Sans GB', 'microsoft YaHei', monospace - windows:
'Consolas', 'Microsoft YaHei', 'SimSun', 'NSimSun', monospace - linux:
'Fira Code', 'Noto Sans CJK SC', 'WenQuanYi Micro Hei', monospace
注意:中文字体名必须用英文名(如 PingFang SC,不是“苹方-简”),多个字体用英文逗号+空格分隔,末尾保留 monospace 保底。改完保存,无需重启,实时生效。
修复集成终端中文乱码
编辑器里正常,但底部 Terminal 显示方块或问号?这是终端渲染字体独立于编辑器。打开设置,搜索 terminal integrated font family,设置 Terminal > Integrated: Font Family:
- macos 推荐:
'MesloLGS NF', 'PingFang SC', 'Hiragino Sans GB'(需先安装 MesloLGS NF 支持图标+中文) - windows 推荐:
'Cascadia Code', 'Microsoft YaHei'(Cas#%#$#%@%@%$#%$#%#%#$%@_b5fde512c76571c8afd6a6089eaaf42aia Code 是微软开源等宽字体,原生支持中文) - Linux 推荐:
'JetBrainsMono Nerd Font', 'Noto Sans CJK SC'
设完后,关闭再重开一个终端(Ctrl+Shift+`),乱码即消失。
确认文件编码为 UTF-8(无 BOM)
极少数情况,文件本身以 GBK 或带 BOM 的 UTF-8 保存,VSCode 会误判。右下角状态栏点击编码(如 UTF-8 或 GBK),选择 Reopen with Encoding → UTF-8;若显示 Save with Encoding,选 UTF-8 并勾选 Don’t show again。长期建议在 settings.json 中强制默认:
"files.encoding": "utf8", "files.autoGuessEncoding": false
避免 VSCode 自作聪明猜错编码。
进阶:全局字体回退策略(适合多语言开发)
如果你常写中文+日文+emoji+代码符号,单一字体撑不住。可在 settings.json 中启用字体回退链:
"editor.fontFamily": "'Fira Code', 'Noto Sans CJK SC', 'Noto Color Emoji', 'Segoe UI Emoji', 'monospace'"
VSCode 会从左到右逐个尝试:英文字体用 Fira Code,中文用 Noto Sans CJK SC,emoji 交给 Noto Color Emoji,兜底用系统等宽字体。顺序不能错,否则中文可能被 emoji 字体截断。
基本上就这些。核心就三点:字体列表配对、终端单独设、编码统一为 UTF-8。不复杂但容易忽略细节——比如输错字体英文名、漏掉空格、或者只改了 editor 没管 terminal。