VSCode中文显示冲突本质是界面语言与文件编码被混淆:必须执行Configure Display Language命令并选zh-cn以生成locale.json,手动改settings.json无效;Output面板乱码需配置Node.js的UTF-8启动参数;右下角锁图标会静默屏蔽所有编码设置,须强制重开并取消“记住此选择”。

VSCode在多语言环境下中文显示冲突,本质是「界面语言」和「文件内容编码」被当成同一件事处理,但它们走的是完全不同的底层通道——改错地方,怎么调都白搭。
Configure Display Language 命令必须执行且选对 zh-cn
装了中文语言包但界面仍是英文?不是插件没生效,是 VSCode 根本没写入 locale.json。它只认这个命令生成的配置,不认 settings.json 里手动加的 "locale" 字段。
- 按
Ctrl+Shift+P输入完整命令名Configure Display Language(别缩写) - 从下拉列表中**明确选**
zh-cn(小写、连字符;zh_CN、Zh-cn、Chinese全无效) - 弹出提示后必须点 Restart,仅 “重载窗口” 不触发写入
- 重启后检查
%APPDATA%\Code\User\locale.json(Windows)是否真实存在,内容是否为{"locale":"zh-cn"}
Output 面板乱码和编辑器编码无关,要动 Node.js 启动参数
插件日志、调试输出、语言服务器返回的中文在 Output 面板里变 或空格?这不是文件编码问题,是 VS Code 的 Extension Host 进程(基于 Node.js)默认没启用 UTF-8 模式。
- Windows 上:在系统环境变量中添加
NODE_OPTIONS=--experimental-utf8(仅 Node.js ≥18.17+ 支持) - 旧版 Node.js:改用
NODE_OPTIONS=--no-warnings --max-old-space-size=4096,并在插件代码里手动调用process.stdout.setEncoding('utf8') - 该设置不影响编辑器打开文件的行为,只修复 Output 面板、Debug Console 等由 Extension Host 输出的内容
右下角带锁图标时,所有编码配置都失效
看到乱码后点了 Reopen with Encoding 并勾选“记住此选择”,VSCode 就会把这个文件的编码“锁死”。此后无论你改 files.encoding、开 files.autoGuessEncoding,甚至重装插件,对该文件全部无效。
- 解锁方法:点击右下角带锁的编码名 → 选
Force Reload with Encoding(部分版本叫Reopen with Encoding,再选一次当前正确编码)→ **务必不勾选“记住此选择”** - 验证是否解锁:关闭该文件标签页,重新打开,看状态栏是否恢复为灰色无锁状态
- 已锁定的文件不会因修改
settings.json自动刷新,必须手动重开
最常被忽略的点是:Output 面板和编辑器文件是两套独立的编码路径,而右下角那个锁图标会彻底屏蔽所有配置——它不像错误提示那样弹出来,只是静默失效。


















