vscode中文乱码需分编码读取、写入和字体三类处理:右下角utf-8→reopen with encoding→gbk可安全验证真实编码;save with encoding误选utf-8 with bom会导致python/git报错;配置须分层——用户级关自动猜测、工作区按后缀指定编码、语言级优先强制;终端乱码需调系统代码页或设pythonioencoding。
立即进入“告别乱码!智能修复工具!☜☜☜☜☜点击进入”;

VSCode 中文乱码不是文件损坏,而是编辑器读错了编码、写错了编码,或者压根没用对字体——三类问题必须分开处理,混着调只会越调越乱。
右下角点 UTF-8 → Reopen with Encoding → 选 GBK 是什么操作
这是临时验证文件真实编码的最安全动作。VSCode 默认用 utf8 解码所有文件,但 Windows 上大量旧文本(记事本保存的 .txt、.bat、.reg、老项目配置)实际是 gbk(即 CP936)。直接打开必然显示方块或 \u4f60\u597d 这类转义字符。
- 点击右下角状态栏的
UTF-8,选Reopen with Encoding→GBK,内容立刻恢复——这步不改文件字节,只改本次读法 - 如果选完更乱,说明不是
gbk,可再试GB2312或Big5;按Ctrl+Z无法撤回,得关掉文件重开 - 别一上来就点
Save with Encoding:那是覆写文件,若误判编码,可能把正常中文变成乱码并永久保存
Save with Encoding → UTF-8 后为什么 Python 报错 import 失败
因为你选了 UTF-8 with BOM。Python、Git、Node.js 全部明确拒绝 BOM:解释器会把开头的 \ufeff 当作非法字符,导致 SyntaxError 或 ImportError;Git 会把 BOM 显示为 ^@ 或引发无意义 diff。
-
Save with Encoding弹窗里,必须手动选UTF-8(不含 “with BOM” 字样) - 全局配置中
"files.encoding": "utf8"的值必须全小写;写成"UTF-8"或"UTF8",VSCode 直接忽略该设置 - 如果项目里混着依赖
gbk执行的.bat或.reg文件,不要全局设死utf8,否则双击运行就报错
settings.json 里怎么配才不踩坑
关键不是“怎么加”,而是“加在哪一层”和“加给谁”。全局硬设 "files.encoding": "utf8" 看似省事,实则埋雷;真正健壮的配置要分层隔离。
- 新项目/协作代码:在用户级
settings.json加两行:"files.encoding": "utf8"和"files.autoGuessEncoding": false(关掉玄学猜测,它对gbk基本必错) - 老项目混
gbk文件:在工作区根目录的.vscode/settings.json里配:"files.associations": {"*.txt": "gbk", "*.log": "gbk"},精准控制后缀,不波及其他 - 语言专属规则(如强制
.py用utf8):用命令面板Preferences: Configure Language Specific Settings→ 选python→ 填"files.encoding": "utf8",比全局配置更优先
终端 print("中文") 还是方块?和编辑器设置无关
这是 PowerShell/CMD 自身代码页和 Python 输出编码对不上,VSCode 编辑器设成 utf8 完全无效。Windows 终端默认用 gbk 渲染,而 Python 3 默认按 utf8 输出,两边打架。
- 临时修复:终端里输
chcp 65001切到 UTF-8 页,再跑 Python - 推荐方案:在用户级
settings.json加"terminal.integrated.env.windows": {"PYTHONIOENCODING": "utf8"},让 Python 强制输出 UTF-8 - PowerShell 用户额外加一行到
$PROFILE:[Console]::OutputEncoding = [System.Text.Encoding]::UTF8,否则关掉终端重开就失效
最容易被忽略的是:新建文件粘贴中文后一保存就乱码——这不是解码问题,是写入路径走错了系统区域编码。务必先点右下角 Save with Encoding → UTF-8,再粘贴再保存,绕过这个底层陷阱。











