VSCode中文乱码主因是文件编码(如GBK)与编辑器默认UTF-8解码不匹配;应先Reopen with Encoding验证编码,再Save with Encoding→UTF-8覆写保存,并在settings.json中按项目/语言精准配置files.encoding。

VSCode中文注释乱码不是字体或语言包问题,而是文件实际编码(如GBK)与编辑器解码方式(默认UTF-8)不匹配——“锟斤拷”“烫烫烫”或方块就是典型信号。
右下角点编码名 → 选 Reopen with Encoding 验证真实编码
这是最安全、可逆的第一步,不改文件字节,只换读法。Windows 上用记事本保存的 .py、.js、.txt 文件,90% 是 GBK 编码,但 VSCode 默认按 UTF-8 解析,必然出错。
- 点击右下角状态栏显示的
UTF-8(或GBK等),弹出菜单后优先选Reopen with Encoding - 依次试
GBK→GB2312→UTF-8 with BOM:只要中文立刻恢复,就坐实了原始编码 - 如果全试完仍乱码,可能是混合编码或含不可见控制字符,建议复制内容到新文件再操作
确认能看之后,必须 Save with Encoding → UTF-8 覆写保存
只靠 Reopen with Encoding 是临时解码,关掉再打开大概率又变乱——真正修复得把文件内容转成 UTF-8 编码并落盘。
- 确认显示正常后,再次点击右下角编码名,这次选
Save with Encoding→UTF-8(注意:不是UTF-8 with BOM) -
UTF-8 with BOM在 Python/Shell 脚本里会引发SyntaxError: Non-UTF-8 code starting with '\xff' - 保存后 Git diff 会显示完整变更,协作时别人不用再手动切编码
settings.json 里怎么配才不踩坑
全局硬设 "files.encoding": "utf8" 看似省事,实则对老项目是灾难:.bat、.reg、.ini 文件一打开就崩。精准覆盖才是正解。
- 新项目/协作开发:在用户级
settings.json加两行:"files.encoding": "utf8"和"files.autoGuessEncoding": false(关掉自动猜测,它对 GBK 基本必错) - 老项目混 GBK:在工作区根目录的
.vscode/settings.json里配"files.associations": {"*.txt": "gbk", "*.log": "gbk"} - 语言专属规则:用命令面板
Preferences: Configure Language Specific Settings→ 选python→ 填"files.encoding": "utf8" - 注意:
"utf8"必须全小写;写成"UTF-8"或"UTF8",VSCode 直接忽略该设置
终端输出中文乱码是另一层问题,和编辑器编码无关
Python 脚本 print("你好") 正常输出 UTF-8 字节,但 Windows 的 cmd 默认用 GBK 接收,字就糊了——这不是 VSCode 的锅,得从 shell 层面对齐。
- Windows 用户:在用户级
settings.json加这段,让终端启动时自动切页:"terminal.integrated.profiles.windows": {"PowerShell": {"args": ["-NoExit", "-Command", "chcp 65001"]}} - 更彻底的方案:设系统环境变量
PYTHONIOENCODING=UTF-8,对所有 Python 进程生效 - 别碰
chcp 65001全局切换,会导致某些旧工具(如部分 .bat)执行失败
真正麻烦的是那些没 BOM、又混着 GBK 和 UTF-8 字节的老文件——它们没法被自动识别,也容易在转码时污染结构。这种时候,别信一键插件,老老实实用 xxd your.py | head -n 5 看前几行十六进制,确认 D6 D0(“中”的 GBK 码)还是 E4 B8 AD(“中”的 UTF-8 码),再动手。


















