乱码不是文件损坏,而是VSCode用UTF-8读取GBK文件导致字节错配;应先点击右下角编码按钮选“Reopen with Encoding→GBK”临时恢复显示,再确认编码后保存,切勿盲目Ctrl+S。

乱码不是文件坏了,是 VSCode 用 UTF-8 去“读”了一个实际为 GBK 编码的文件——字节对不上,自然显示成“鏂囦欢缂栫爜”“锟斤拷”这类中文乱码。关键动作就两个:别保存、先改编码。
点击右下角编码按钮,选“Reopen with Encoding”
这是最快救急的方式。VSCode 窗口右下角状态栏会显示 UTF-8 或其他编码名,直接点击它,弹出菜单后选 Reopen with Encoding → 再从列表里找 GBK(或 GB2312)。选完立刻重载,乱码变回正常中文。这个操作不改磁盘文件,纯内存解码切换,安全。
- 如果列表里没看到
GBK,按Ctrl+Shift+P打开命令面板,输入Change File Encoding,再手动搜gbk - 别点
Save with Encoding—— 那会把当前显示的乱码内容用新编码写回磁盘,原始中文就真丢了 - 老项目里 .jsp、.properties、.xml 这类文件最常中招,尤其是从 Windows 旧系统拷过来的
确认 files.autoGuessEncoding 是否开启
VSCode 默认不自动猜编码,靠的是 files.autoGuessEncoding 这个开关。设为 true 后,它会扫描文件开头字节特征(比如有没有 BOM、中文双字节分布),尝试匹配 GBK/UTF-8。但猜错率不低,尤其短文件或纯中文注释。
- 打开
settings.json,检查是否有"files.autoGuessEncoding": true - 建议关掉它:
"files.autoGuessEncoding": false—— 主动控制比被动猜测更稳 - 开启后反而容易在 UTF-8 文件里误判成 GBK,导致“本来好好的,一打开就乱”
保存前务必确认最终编码
用 GBK 重新打开后看到中文正常了,不代表可以 Ctrl+S 直接保存。此时你编辑器内存里是 GBK 解出来的 Unicode 字符,但默认保存行为仍走 files.encoding 设置(通常是 utf8)。
- 保存前再次点击右下角编码区域,选
Save with Encoding→GBK,确保落盘格式和源一致 - 若想长期统一,可在工作区
.vscode/settings.json里加:"files.encoding": "gbk"(仅限该目录下所有文件) - 跨平台协作时慎用全局
gbk,Linux/macOS 终端和 Git 默认认 UTF-8,容易引发后续问题
最易被忽略的一点:乱码分“能救”和“已毁”。前者是打开时解码错了,后者是已经用错误编码保存过一次——比如你看到“锟斤拷”,顺手 Ctrl+S,VSCode 就把这三个乱码字按 UTF-8 编码写进硬盘,原始 GBK 字节彻底覆盖。所以右下角那个编码提示,永远是你第一道防线,而不是最后一步。











