VSCode中文乱码主因是编码不匹配,需分三步解决:先右下角点编码名选Reopen with Encoding→GBK验证真实编码;确认显示正常后Save with Encoding→utf8转码覆写;最后设"files.autoGuessEncoding": false和"files.encoding": "utf8"确保稳定。

不是文件损坏,也不是 VSCode 坏了——是它用 UTF-8 去读一个实际存为 GB2312(或更常见的是 GBK)的文件,字节对不上,自然显示成“锟斤拷”或方块。
右下角点编码名 → 选 Reopen with Encoding 是最快验证方式
VSCode 状态栏右下角显示的 UTF-8 只是它当前的“猜测”,不是文件真实编码。乱码时第一反应不是改设置,而是立刻点击那个编码名:
- 选
Reopen with Encoding(不是Save with Encoding) - 优先试
GBK:Windows 记事本、Keil、Vivado 导出的.c/.v/.txt文件,99% 是这个,一试就恢复 - 再试
GB18030:比 GBK 更全,兼容所有 GB 系列,推荐作为备选 - 慎用
GB2312:VSCode 内部对它的支持不完整,填了可能灰掉或无效;GBK已足够覆盖 - 如果越试越乱,关掉文件重开——
Ctrl+Z在这里无效
确认能看后,必须点 Save with Encoding → utf8 才算真正解决
只靠 Reopen with Encoding 是临时的,下次打开还会乱。要一劳永逸,得把内容按 UTF-8 重新写回磁盘:
- 中文正常显示后,再次点击右下角编码名 →
Save with Encoding→ 选utf8(注意全小写、无短横、无 BOM) - 别选
utf8bom:Python 会把\ufeff当首字符,导致import报错;Git diff 里也会冒出异常符号 - 如果文件是从微信、网页复制粘贴进来的,可能混有不可见样式字符,建议先复制内容到新文件,再
Save with Encoding,避免转码污染 - 保存后,VSCode 会把这个选择记为该文件的“偏好编码”,下次直接按
utf8读
files.autoGuessEncoding 设为 false 才稳定
很多人开了 files.autoGuessEncoding 想“省事”,结果更糟:短文本、纯数字+中文组合、无 BOM 的 GBK 文件,基本都被误判成 windows1252 或 ISO-8859-1,刚打开就满屏乱码。
- 打开命令面板
Ctrl+Shift+P→ 输入Preferences: Open Settings (JSON) - 加一行:
"files.autoGuessEncoding": false - 同时确认全局
"files.encoding": "utf8"(必须小写、无短横) - 这样 VSCode 就不再瞎猜,完全依赖你手动选的编码或文件自带 BOM,行为可预期
老项目 C/Verilog 文件不能靠全局设 gbk,得用 files.associations 精准匹配
全局把 "files.encoding" 设成 gbk 是危险操作:新写的 .py、.js 会因此语法报错,Git 提交也容易冲突。正确做法是按语言类型单独关联:
- 在
settings.json中添加:
"[c]": {
"files.encoding": "gbk"
},
"[verilog]": {
"files.encoding": "gbk"
}
- 这样只有
.c和.v文件默认用gbk打开,其他文件不受影响 - 注意:值必须写
gbk,不是GB2312;VSCode 不识别后者,写了等于没写 - 如果项目里还有
.bat或.reg,它们也依赖 GBK 执行,同样要用files.associations单独配,别动全局
真正麻烦的从来不是“怎么让 VSCode 读对”,而是旧文件没 BOM、又混在 UTF-8 项目里——这种时候,靠设置不如靠右下角点一下;而最容易被忽略的,是 Save with Encoding 那一步没做,结果每次打开都得重复劳动。


















