VSCode中文乱码主因是编码错配而非文件损坏;应先右下角点编码名选“Reopen with Encoding”验证真实编码(如GBK),确认显示正常后再选“Save with Encoding”→utf8转码,禁用autoGuessEncoding并分语言配置encoding,终端乱码需同步设置chcp 65001及PYTHONIOENCODING。

VSCode 中文乱码不是文件坏了,而是它读错了字节——先用 Reopen with Encoding 确认真实编码,再用 Save with Encoding 转存,否则改设置也没用。
右下角点击 UTF-8 后该选 “Reopen” 还是 “Save”?
这是最常踩坑的操作点:Reopen with Encoding 只改变当前读取方式,不写磁盘;Save with Encoding 才真正重写文件字节。两者不能互换。
- 乱码时直接点右下角 → 选
UTF-8(没点“Reopen”)→ 满屏方块:这是强行用 UTF-8 解释 GBK 字节,属于错解,不是切换 - 想验证文件是不是 GBK?点右下角 →
Reopen with Encoding→GBK,文字出来了,说明原文件就是 GBK 编码 - 确认后想永久转成 UTF-8?再点右下角 →
Save with Encoding→utf8(注意:不要选UTF-8 with BOM,Python/Git 会报错) - 点完没反应?先按
Ctrl+S保存一下再试,VSCode 有时要求文件有修改才激活菜单项
为什么改了 files.encoding 还是乱码?
files.encoding 只影响新建文件和没 BOM 的旧文件,对已打开过的文件几乎无效——VSCode 会记住上次用的编码。
- 设了
"files.encoding": "utf8",新建的.js默认是 UTF-8,但昨天用 GBK 打开过的.txt,下次仍按 GBK 打开 - 想让已有文件也“听话”,得关掉自动猜测:
"files.autoGuessEncoding": false,否则它可能在你不知情时又切回 GBK - 某个文件死活记不住你选的 UTF-8?删掉工作区下的
.vscode/workspaceStorage文件夹,重启 VSCode,它就清空记忆重来 -
"files.encoding": "utf8"中的值必须全小写;写成"UTF-8"或"UTF8",VSCode 直接忽略该设置
终端输出中文乱码怎么同步修复?
文件编码对了,终端(Terminal)还是乱码?因为 VSCode 集成终端默认用系统代码页(Windows 常为 GBK),而你的程序输出的是 UTF-8。
- 在
settings.json中加这段,强制终端用 UTF-8:
{
"terminal.integrated.profiles.windows": {
"PowerShell": {
"source": "PowerShell",
"args": ["-NoExit", "/c", "chcp 65001"]
},
"Command Prompt": {
"path": "cmd.exe",
"args": ["/K", "chcp 65001"]
}
},
"terminal.integrated.defaultProfile.windows": "PowerShell"
}
"terminal.integrated.env.linux": {"LANG": "en_US.UTF-8"} 或类似环境变量团队协作或老项目里混着 GBK 文件怎么办?
不能一刀切设全局 utf8,否则 .bat、.reg 或某些遗留 C 工程里的配置文件可能双击运行失败。
- 按语言类型配编码更安全,比如在
settings.json里加:
"[c]": {"files.encoding": "gbk"},
"[cpp]": {"files.encoding": "gbk"},
"[plaintext]": {"files.encoding": "gbk"}
.code-workspace 文件里写 settings 字段files.autoGuessEncoding: true:它对 GBK/GB2312 基本无法准确猜中,反而可能误判成 Latin1,导致更乱Reopen + Save,中间一个文件识别失败,就静默损坏真正麻烦的从来不是设置本身,而是 VSCode 对“已打开文件”的记忆机制和终端与编辑器编码的分离设计——这两点不厘清,调一百次 files.encoding 都白搭。


















