VSCode中文乱码应先右下角点编码名选Reopen with Encoding→试GBK,能正常显示后再Save with Encoding→utf8(全小写无BOM)覆写;若右下角带锁图标需先解锁,老项目.bat/.reg等文件须用语言级配置设gbk而非全局设utf8。

乱码不是文件坏了,是 VSCode 用错了编码去读——多数情况是文件存的是 GBK,而 VSCode 默认按 UTF-8 解,字节对不上,“你好”变成“浣犲ソ”或“文件”。救不救得回来,取决于你有没有点过 Ctrl+S。
右下角点击编码名后选哪个?先试 GBK 再试 GB2312
Windows 上记事本保存的 .txt、.ini、.bat、.reg 文件,90% 是 GBK 编码。看到乱码第一反应不是改设置,而是:
• 点击右下角显示的编码名(如 UTF-8)
• 选 Reopen with Encoding
• 依次点 GBK → GB2312 → UTF-8 with BOM
• 能正常显示就停住,别往下试
• 如果选项灰掉,先 Ctrl+S 保存一下再点(VSCode 认为“未修改”时禁用重载)
能看了≠修好了:必须用 Save with Encoding 覆写为 utf8
Reopen with Encoding 只是临时换种方式读,不改文件内容;真正修复靠的是保存动作:
• 确认 GBK 能正常显示后,再次点击右下角编码名
• 选 Save with Encoding → utf8(注意全小写、无短横、无 BOM)
• 不要选 utf8bom:Python 会报 SyntaxError: Non-UTF-8 code starting with '\xff',Git diff 显示一堆 \ufeff
• 如果内容是从微信/网页复制的,可能含零宽空格(U+200B),建议先粘贴到新文件再执行此步
为什么改了 files.encoding 还是乱?锁图标和值写法两个坑
右下角编码旁出现锁图标,说明该文件已被硬编码锁定——此时所有全局设置(包括 files.encoding、files.autoGuessEncoding)全部失效:
• 解锁方法:点右下角 → Reopen with Encoding → 再选一次当前能正常显示的编码(如 GBK),**务必不勾选“记住此选择”**
• 验证是否解锁:关闭该文件标签页,重新打开,看状态栏是否变回灰色无锁状态
• files.autoGuessEncoding 必须是布尔值 true,写成字符串 "true"(带引号)VSCode 完全忽略
• files.encoding 的值必须是 utf8(全小写),写成 UTF-8、UTF8 或 utf8bom,VSCode 直接跳过
老项目有 .bat/.reg?别设全局 files.encoding,改用语言级配置
全局配 "files.encoding": "utf8" 对新建项目安全,但对老项目危险:.bat、.reg、.ini 在 Windows 下依赖 GBK 执行,一旦被强制用 utf8 保存,双击运行就会报错或失效:
• 正确做法:按 Ctrl+Shift+P → 输入 Preferences: Configure Language Specific Settings → 选 Plain Text 或 Batch
• 加入 "files.encoding": "gbk"
• 这样 .py 文件走 utf8,.bat 文件仍按 gbk 处理,互不干扰
• 不要用 "*.ini" 通配符,优先级低于语言标识,且 VSCode 常把 .ini 识别为 inifile 类型
真正麻烦的不是“看不懂”,而是“看懂了却搜不到”——即使你用 Reopen with Encoding 把 GBK 文件看得清清楚楚,Ctrl+Shift+F 全局搜索也搜不到里面的中文,因为 VSCode 搜索引擎只索引 UTF-8 编码的文件(截至 2026 年 10 月)。


















