VSCode中文乱码主因是字体缺失、终端配置错误或UTF-8带BOM;需分别设置editor.fontFamily和terminal.integrated.fontFamily为含中文字体的链,保存文件为UTF-8无BOM,并确保系统locale与远端环境均为UTF-8。

VSCode 中文乱码几乎从不因为“编码错了”,而是编辑器或终端没用对字体,或者 UTF-8 带了 BOM、系统 locale 没对齐——三者只要一个掉链子,中文就变方块或问号。
检查并设置 editor.fontFamily
编辑器里注释、字符串、变量名里的中文显示为小方块?这是最常见原因:VSCode 默认字体链里压根没中文字体,fallback 到无中文支持的等宽字体(比如 Monaco 或 Consolas)。
- 打开设置(
Cmd + ,或Ctrl + ,),搜font family,找到Editor: Font Family - 填入对应系统的中文字体链(注意:必须用英文名,逗号后加空格,末尾保留
monospace):
"editor.fontFamily": "'Fira Code', 'Noto Sans CJK SC', 'Microsoft YaHei', monospace"
- macOS 推荐:
'SF Mono', 'PingFang SC', 'Hiragino Sans GB', monospace' - Windows 推荐:
'Consolas', 'Microsoft YaHei', 'SimSun', monospace' - Linux 推荐:
'Fira Code', 'Noto Sans CJK SC', 'WenQuanYi Micro Hei', monospace' - 改完立即生效,不用重启;如果仍模糊/断笔,可能是渲染问题,可临时加
"editor.renderWhitespace": "all"辅助观察字形边界
修复集成终端(Terminal)中文乱码
编辑器里正常,但底部终端输出中文是 □□□ 或 ?这不是 VSCode 的错,是终端仿真器+字体+shell 编码三者没对齐。
- 先确认终端本身编码是 UTF-8:在终端里运行
chcp(Windows)或locale(macOS/Linux),确保UTF-8出现在输出中 - 在 VSCode 设置中搜
terminal.integrated.fontFamily,填入支持中文的等宽字体链:
"terminal.integrated.fontFamily": "'Cascadia Code', 'Microsoft YaHei', monospace"
- Windows 用户务必同时在终端右键 → 属性 → 字体,选
Consolas或Cascadia Code(不能只靠 VSCode 设置) - macOS/Linux 用户若用 iTerm2 或 GNOME Terminal,需单独设置其字体为
JetBrainsMono Nerd Font或SF Mono SC,否则 VSCode 终端即使设了也 fallback 失败 - 改完后必须关闭当前终端再按
Ctrl + Shift + `新开一个,旧终端不会刷新字体
强制统一文件编码为 UTF-8(无 BOM)
右下角状态栏显示 UTF-8 with BOM?这就是 Windows 记事本留下的经典陷阱——BOM 会干扰很多工具链(比如 Python import、Git diff、Node.js require),导致看似正常的文件在终端或脚本里输出乱码。
- 点击右下角编码显示,选
Save with Encoding → UTF-8(不是 “UTF-8 with BOM”) - 全局锁定默认编码,在
settings.json中加这两行:
"files.encoding": "utf8", "files.autoGuessEncoding": false
- 避免项目级配置覆盖:检查
.vscode/settings.json是否有"files.encoding": "gbk"这类覆盖项,删掉或改成"utf8" - Python 文件建议顶部加声明(虽非必需,但能防某些旧工具误读):
# -*- coding: utf-8 -*-
排查远程开发与扩展干扰
你在用 Remote-SSH 或 WSL?乱码可能来自远端环境而非本地 VSCode。
- SSH 连上远端后,运行
locale,确认LANG是类似zh_CN.UTF-8而非C或空值;若不是,需在远端 shell 配置(如~/.bashrc)中添加:export LANG=zh_CN.UTF-8 - 禁用可疑扩展测试:临时禁用 ESLint、Prettier、Auto Rename Tag 等旧版本扩展,它们曾因编码处理逻辑缺陷覆盖
files.encoding - 不要碰注册表或系统区域设置——Win10/11 启用 “Beta: Use Unicode UTF-8…” 反而可能让 cmd.exe 以外的程序崩溃,得不偿失
真正卡住的点往往不在“哪里改”,而在“改了没生效”:字体链末尾漏了 monospace、终端没重开、远端 locale 没生效、或是项目级 .vscode/settings.json 在悄悄覆盖你刚配好的全局设置——建议打开命令面板运行 Developer: Toggle Developer Tools,看 Console 有没有字体加载失败警告,那才是真实线索。










