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

VSCode显示乱码,90%不是文件损坏,而是编辑器用UTF-8去读一个实际是GBK编码的文件——点右下角“UTF-8”选Reopen with Encoding→GBK,立刻恢复;再点它选Save with Encoding→utf8,才算真正修复。
右下角点“UTF-8”后没反应或选项灰掉?
这是常见误操作信号:VSCode认为文件未修改,禁用了重载入口。只需先按Ctrl+S保存一下(哪怕没改内容),状态栏编码名就会重新激活,菜单恢复可用。
-
Reopen with Encoding是只读诊断动作,不写磁盘、不改原文件,安全可反复试 - 优先试
GBK,不是GB2312:前者字库更全,Windows记事本、旧版Excel导出的.txt/.py/.csv基本都用它 - 若选
GBK后更乱,别硬撑,关掉文件重开,再试UTF-8 with BOM(常见于Excel另存为CSV)
为什么Save with Encoding→utf8必须手动点?
files.encoding设成"utf8"只对新建空文件生效,对已存在的乱码文件完全无效——VSCode会忠实沿用你上次打开它时用的编码(比如你刚用GBK重开过,它就记住“这个文件=GBK”)。
- 值必须写成
utf8(全小写、无短横、无BOM),写成UTF-8或utf8bom会被VSCode静默忽略 - 保存后文件被覆写为无BOM UTF-8,Git diff干净,Python
import不报\ufeff - 如果保存后反而乱码,说明文件混了多种编码(如微信复制粘贴带富文本控制符),建议复制内容到新文件再
Save with Encoding→utf8
终端print("中文")还是方块?和文件编码无关
这是PowerShell/CMD自身代码页与Python输出通道不匹配导致的,调编辑器编码设置毫无作用。
- 临时解决:在集成终端里执行
chcp 65001,切到UTF-8页,再跑Python - 永久方案:在
settings.json加"terminal.integrated.env.windows": {"PYTHONIOENCODING": "utf8"} - PowerShell用户还需改
$PROFILE,加一行:[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
老项目全是.bat或.reg,不敢设全局utf8?
对。这类Windows脚本依赖GBK执行,全局设死"files.encoding": "utf8"会导致双击运行报错。正确做法是精准绑定:
- 在
settings.json里配"files.associations": {"*.bat": "gbk", "*.reg": "gbk"} - 同时关掉
"files.autoGuessEncoding": false——VSCode的自动猜测对中文短文本误判率极高,开着容易编辑中途文字突然变方块 - 新项目才推荐全局设
"files.encoding": "utf8",且务必配合"files.autoGuessEncoding": false一起用
最易被忽略的一点:新建文件粘贴中文后一保存就乱码,往往不是读错了,而是写入路径走的是GBK——必须先点右下角Save with Encoding→utf8,再粘贴、再保存,才能绕过这个底层陷阱。


















