vscode中文乱码需分清文件存储、编辑器解码、终端解释三者编码:右下角显示≠真实编码,应通过reopen with encoding手动尝试gbk/utf-8等;终端乱码需配置chcp 65001;老项目宜按后缀设置files.associations;git中文乱码需git config --global core.quotepath false。

VSCode 中文乱码不是配置没加够,而是你没分清「文件存的是什么」「编辑器读的是什么」「终端解的是什么」——三者只要有一环错位,中文就糊。
右下角显示 UTF-8 ≠ 文件真是 UTF-8
VSCode 右下角写的编码只是它当前用来解码的假设值,不是文件磁盘上的真实编码。很多用户一看到写的是 UTF-8 就直接去改 settings.json,结果越调越乱。
- 点右下角编码名 → 选
Reopen with Encoding→ 依次试GBK、GB2312、UTF-8 with BOM;只要中文瞬间清晰,就说明找对了真实编码 - 如果所有选项都灰掉,先按
Ctrl+S保存一下再点——VSCode 认为“未修改”时会禁用重载入口 - 确认能正常显示后,再次点右下角 → 选
Save with Encoding→utf8(注意全小写、无短横、无 BOM);utf8bom会导致 Python 脚本报SyntaxError: Non-UTF-8 code starting with '\xff'
终端输出乱码:不是 VSCode 的锅,是 shell 的代码页没对上
编辑器里中文正常,但 print("你好") 在集成终端里变成 浣犲ソ,这说明文件和编辑器编码没问题,问题出在终端解释字节的方式上。
- Windows PowerShell / CMD 默认代码页是
936(GBK),而 Python 默认用 UTF-8 输出;6 个字节被按 GBK 解,必然乱 - 临时修复:在终端里手动输
chcp 65001,但每次新开终端都要输,不现实 - 永久修复:在
settings.json里加这段,让 VSCode 启动终端时自动执行:{ "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" }
老项目混编码?别全局硬设 files.encoding
给整个 VSCode 强制设 "files.encoding": "utf8" 对新项目安全,但对含 .bat、.reg、.ini 的老项目是灾难——这些文件依赖系统默认 GBK,一打开就变方块。
- 更稳妥的做法是按后缀精准控制:
"files.associations": { "*.py": "utf8", "*.js": "utf8", "*.md": "utf8", "*.bat": "gbk", "*.reg": "gbk", "*.log": "gb2312" } - 同时关掉玄学猜测:
"files.autoGuessEncoding": false(必须是布尔值false,写成字符串"false"会被完全忽略) - 右下角出现锁图标?说明该文件已被硬编码锁定,所有设置失效;解锁方法是点右下角 →
Force Reload with Encoding(或再点一次当前编码),且**不勾选“记住此选择”**
Git 提交/差异里中文变问号?那是 Git 自己在搞鬼
VSCode 编辑器和终端都正常了,但 git diff 里中文还是 ???,这是 Git 默认关闭路径转义导致的。
- 运行命令强制启用:
git config --global core.quotepath false - 如果提交日志里中文也乱,补一句:
git config --global i18n.commitencoding utf8 - 注意:这些是 Git 层配置,和 VSCode 无关,改完不用重启编辑器
最常被跳过的一步:确认文件真实编码必须靠 Reopen with Encoding 手动试,而不是看右下角写什么;最常被写错的值:utf8(小写无横线)、true(布尔值不带引号)、chcp 65001(不是 65000 或 65536)。











