VSCode中文乱码主因是编码错配而非配置缺失,应先点右下角“UTF-8”选Reopen with Encoding→GBK临时恢复显示,再Save with Encoding→utf8永久转码,终端乱码需设PYTHONIOENCODING=utf8。

VSCode安装后中文乱码,90%不是配置没加,而是你还没点过右下角那个“UTF-8”——点它、选Reopen with Encoding→GBK,立刻恢复正常;这步做完再谈保存、终端、字体,顺序错了越调越乱。
右下角点“UTF-8”后选Reopen with Encoding试GBK是第一动作
Windows 上用记事本保存的 .txt、.bat、.reg 文件,默认是 GBK 编码,但 VSCode 默认按 UTF-8 解码,结果就是满屏 □ 或 。这不是文件损坏,只是读法错了。
- 打开乱码文件 → 点右下角显示的编码名(如
UTF-8)→ 选Reopen with Encoding→ 优先试GBK - 文字立刻变正常?说明原始编码就是
GBK;更乱了?关掉文件重开,再试GB2312或UTF-8 with BOM - 这个操作只改本次读取方式,不写入、不破坏原文件,安全可逆
- 如果菜单项全灰,先按
Ctrl+S保存一下再点——VSCode 认为“未修改”时会禁用重载入口
Save with Encoding → utf8 才算真正修复
能看 ≠ 已修复。只靠 Reopen with Encoding,下次打开照样乱。必须把内容真正转成通用编码写回磁盘。
- 确认
GBK能正常显示后,再次点击右下角编码名 → 选Save with Encoding→ 必须选utf8(全小写、无短横、无with BOM) - 选错
utf8bom会导致 Python 报SyntaxError: Non-UTF-8 code starting with '\xff',Git diff 也会多出无意义变更 - 如果保存后反而乱码,说明文件可能混用了编码(比如部分段落是
GBK、部分是UTF-8),此时别覆盖原文件,先复制内容到新文件再另存为utf8 -
files.encoding设为utf8只影响新建空文件,对已存在文件完全无效——别指望它救老文件
终端 print("中文") 乱码跟文件编码无关
编辑器里文件能看清楚,不代表终端能输出中文。这是 stdout 编码和终端解码没对齐,Python 和 CMD/PowerShell 各说各话。
- Windows 下最稳方案:在
settings.json里加这一行:"terminal.integrated.env.windows": {"PYTHONIOENCODING": "utf8"} - 临时验证:终端里先运行
chcp 65001,再跑 Python 脚本,如果立刻正常,就坐实是这个原因 -
terminal.integrated.encoding已弃用,设了也无效;别碰它 - PowerShell 7(
pwsh)比 PowerShell 5.1 更可靠,原生支持 UTF-8 且无 BOM 污染
右下角出现锁图标?所有设置都失效
一旦你手动点过 Reopen with Encoding 或 Save with Encoding 确认过某文件的编码,VSCode 就会把它“锁定”,后续所有设置(包括 files.encoding、files.autoGuessEncoding)对该文件全部失效。
- 解锁方法:点击右下角编码名 → 选
Force Reload with Encoding(部分版本叫Reopen with Encoding再选一次当前编码),**不勾选“记住此选择”** - 验证是否解锁:关闭文件再重开,看状态栏是否恢复为灰色无锁状态
-
files.autoGuessEncoding必须是布尔值true,写成字符串"true"(带引号)VSCode 完全静默忽略 - 全局设
"files.encoding": "utf8"对老项目危险:.bat/.reg文件一打开就变方块;更安全的是按语言配,比如"[bat]": {"files.encoding":"gbk"}
真正麻烦的从来不是“怎么配”,而是分不清哪一段乱码属于读取、哪一段属于写入、哪一段根本是终端或字体链断了——三者混着调,只会让问题更模糊。


















