VSCode中文乱码主因是编码错配、终端编码不匹配或字体未配置,须分三类处理:先右下角点编码名选Reopen with Encoding→GBK验证真实编码,确认后Save with Encoding→UTF-8转码,再关files.autoGuessEncoding并配终端chcp 65001及中文字体。

VSCode 中文乱码不是文件坏了,而是它读错了、写错了,或者压根没用对字体——三件事必须分开调,混着改只会越调越乱。
右下角点编码名 → Reopen with Encoding 是最快验证真实编码
乱码文件打开后,先别急着改设置。窗口右下角显示的编码(比如 UTF-8 或 GBK)只是 VSCode 的猜测,不一定对。点击它,选 Reopen with Encoding,然后依次试:
-
GBK(Windows 记事本、.bat、.reg、老项目配置最常见) -
GB2312(部分导出文本、旧数据库 dump) -
UTF-8 with BOM(Excel 或 Notepad++ 导出的 CSV、某些 .ini) -
UTF-8(新项目、协作代码、.py/.js/.ts 文件的正确归宿)
只要中文立刻变正常,就说明找对了。这个操作不改文件字节,安全可逆;如果越试越乱,关掉文件重开再试——Ctrl+Z 在这里无效。
Save with Encoding → UTF-8 才算真正解决
确认真实编码后,继续点右下角编码名,这次选 Save with Encoding,然后务必选 UTF-8(注意:不是 UTF-8 with BOM)。这步会把文件内容按 UTF-8 重新写入磁盘,解决后续 Git 提交、跨平台编辑、插件解析等所有衍生问题。
注意:
- 选错
UTF-8 with BOM会导致 Python 报SyntaxError: Non-UTF-8 code starting with '\xef',Git 显示无意义 diff -
"files.encoding": "utf8"必须全小写;写成"UTF-8"或"UTF8",VSCode 直接忽略该配置 - 如果文件里有混合控制字符或特殊符号,建议先复制内容到新文件再另存,避免转码污染
关掉 files.autoGuessEncoding 才更稳
很多人开了 files.autoGuessEncoding 想“省事”,实际在中文场景下误判率极高:短文本、纯数字+中文组合、无 BOM 的 GBK 文件,基本都识别成 ISO-8859-1 或 windows1252,刚打开就乱码。
正确做法是手动关掉:
- 按
Ctrl+Shift+P输入Preferences: Open Settings (JSON) - 加一行:
"files.autoGuessEncoding": false - 保存即生效,无需重启
关掉之后,VSCode 完全依赖你设的 files.encoding 或文件自带 BOM,行为可预期,不会中途突然变乱。
终端输出乱码要单独配,和编辑器无关
编辑器里中文正常,但终端跑 Python 输出还是方块?那是集成终端的编码没对上。Windows 上最直接有效的办法是在 settings.json 里加:
{
"terminal.integrated.profiles.windows": {
"PowerShell": {
"source": "PowerShell",
"args": ["-NoExit", "-Command", "chcp 65001"]
},
"Command Prompt": {
"path": "cmd.exe",
"args": ["/K", "chcp 65001"]
}
},
"terminal.integrated.defaultProfile.windows": "PowerShell"
}
其中 chcp 65001 强制将当前终端代码页设为 UTF-8。注意:terminal.integrated.fontFamily 也要显式指定中文字体(如 'Consolas', 'Microsoft YaHei', monospace),否则即使编码对了,也可能显示为空心方块。
真正的难点从来不在“怎么设”,而在于分清:这是文件读取问题?是终端输出问题?还是字体渲染问题?三者路径不同,混着调只会互相掩盖线索。











