vscode终端中文显示不靠locale配置,而由系统环境变量lang/lc_all决定;linux/macos需设为zh_cn.utf-8,windows需启用utf-8区域设置,且远程开发须在远程端同步配置。

终端中文显示不靠 locale,靠系统环境变量
VSCode 集成终端(Terminal)默认调用系统 shell(bash/zsh/powershell),它完全不读 locale.json 或 settings.json 里的 "locale": "zh-cn"。菜单变中文 ≠ 终端变中文——这是两个独立系统。终端里 ls 列中文文件名乱码、git status 路径显示问号、错误提示仍是英文,根本原因只有一个:系统没告诉 shell “请用中文 locale 启动”。
- Linux/macOS:必须确保
LANG或LC_ALL环境变量设为zh_CN.UTF-8(注意是下划线,不是短横线;且该 locale 已通过locale-gen或sudo localedef生成) - Windows(CMD/PowerShell):控制面板 → 区域 → 管理 → 更改系统区域设置 → 勾选“Beta 版:使用 Unicode UTF-8 提供全球语言支持”(推荐),或直接设为“中文(简体,中国)”
- 验证方式:在 VSCode 终端里执行
echo $LANG(Linux/macOS)或echo %LANG%(Windows CMD),输出应为zh_CN.UTF-8或类似值
终端字体配置必须单独设,editor.fontFamily 不生效
即使系统 locale 正确,终端仍可能显示方块或发虚——因为终端用的是自己专属的字体配置项,和编辑器区完全隔离。
- 必须手动设置
terminal.integrated.fontFamily,值建议与editor.fontFamily保持一致,例如:"Fira Code", "JetBrains Mono", "Microsoft YaHei", "PingFang SC" - 顺序不能错:西文字体在前(保证等宽、连字),中文字体兜底(负责渲染中文字符);若写成
"Microsoft YaHei", "Fira Code",所有字符强制走微软雅黑,英文就失去等宽特性 - macOS 用户注意:
PingFang SC对中文标点兼容性优于Heiti SC;SF Mono必须放在中文字体前,否则{}符号会变细 - 改完后必须彻底退出 VSCode 进程(Windows 杀光所有
Code.exe,macOS 在活动监视器结束Electron),仅关闭窗口无效
远程开发(SSH/WSL)终端中文要双端配置
Remote-SSH 或 WSL 启动的是远程机器上的独立 VSCode Server 进程,它既不继承本地 locale,也不加载本地扩展。你在本地装了中文包、配了 LANG,对远程终端毫无影响。
- 远程 Linux/macOS:登录后执行
echo 'export LANG=zh_CN.UTF-8' >> ~/.bashrc && source ~/.bashrc,并确认该 locale 已生成 - 远程 Windows(WSL):需在 WSL 内部运行
sudo update-locale LANG=zh_CN.UTF-8,再重启 WSL(wsl --shutdown) - 远程 PowerShell(SSH):在远程
$PROFILE中添加$env:LANG="zh_CN.UTF-8" - 验证:在远程终端中执行
echo $LANG,而非只看本地终端
离线安装中文包后终端仍英文?这本来就是对的
很多人看到右下角状态栏显示 zh-cn,但终端还是英文,第一反应是“汉化失败”。其实这恰恰说明你做对了:VSCode 中文语言包只负责 UI 层(菜单、设置页、命令面板),终端语言由操作系统决定,两者本就不该耦合。
- 如果你真需要终端输出中文(比如
man ls显示中文手册、gcc错误提示为中文),那必须配置系统级 locale,而不是反复重装语言包 - 插件
MS-CEINTL.vscode-language-pack-zh-hans对终端零作用;命令Configure Display Language对终端零作用;settings.json里加"locale"对终端零作用 - 最容易被忽略的点:终端里
git、node、python等工具自身的语言,还受它们各自环境变量控制(如git config --global i18n.logOutputEncoding utf-8),这不是 VSCode 能管的范畴











