vscode中文乱码需分三类处理:文件编码错、写入编码错、终端/字体不匹配。右下角点utf-8选gbk重开可快速诊断;新建文件先save with encoding→utf-8再粘贴;终端乱码需设chcp 65001或pythonioencoding;字体须用英文名按优先级配置。

VSCode中文乱码不是文件损坏,而是编辑器读错了、写错了,或者终端/字体没配对——三类问题必须分开处理,混着调只会越调越乱。
右下角点“UTF-8”选GBK重开,立刻验证是不是编码错
这是最快速的诊断动作。Windows上很多.txt/.py/.bat文件实际是GBK(CP936)编码,但VSCode默认用UTF-8解码,结果就是中文变方块、问号或\u4f60\u597d这类转义序列。
- 点击右下角状态栏的编码标识(如
UTF-8),选Reopen with Encoding→GBK,内容若立刻恢复,说明文件确实是GBK - 别试
GB2312:兼容性差,GB18030更全,但GBK覆盖99%场景 -
Reopen with Encoding不改文件,只改本次读法;确认显示正常后,再点同位置 →Save with Encoding→UTF-8,才算真正转码覆写 - 绝对不要选
UTF-8 with BOM:Python会把\ufeff当首字符导致import失败,Git diff里也会冒出异常符号
新建文件粘贴中文后一保存就乱码?是写入路径没走UTF-8
这不是解码问题,是VSCode新建文件时标称UTF-8,但底层受系统区域设置影响,仍可能用GBK写入——尤其从微信、网页复制中文后直接Ctrl+S,文件实际存的是GBK字节,却声称UTF-8,下次打开必然崩。
- 新建空文件后,**先点右下角 →
Save with Encoding→UTF-8**,再粘贴、再保存,绕过这个写入陷阱 - 永久解决:在
settings.json加两行:"files.autoGuessEncoding": false(关掉玄学猜测)、"files.encoding": "utf8"(注意全小写,UTF-8或UTF8会被VSCode忽略) - 老项目含.bat/.reg文件?别全局设
"files.encoding": "utf8",它们依赖GBK执行,硬设会导致双击运行报错——改用"files.associations": {"*.bat": "gbk"}单独配
终端print("中文")输出方块?和编辑器设置完全无关
这是PowerShell/CMD自身代码页和Python输出编码对不上。VSCode编辑器设成UTF-8毫无作用,必须动shell层。
- 临时修复:终端里输
chcp 65001(切到UTF-8代码页),再跑Python - 推荐方案:在
settings.json加"terminal.integrated.env.windows": {"PYTHONIOENCODING": "utf8"},让Python强制用UTF-8输出 - PowerShell用户还应改
$PROFILE,加一行:[Console]::OutputEncoding = [System.Text.Encoding]::UTF8 - 字体必须支持中文:搜
terminal.integrated.fontFamily,设为"Cascadia Code", "Microsoft YaHei"这类组合,单设Consolas会fallback到无中文的字体
编辑器里中文正常,但注释/变量名/悬停还是方块?字体链没配全
VSCode编辑器和终端字体配置是独立的,且中文字体必须用英文名、按优先级顺序列,末尾加monospace保底。
- 搜
editor.fontFamily,填:'Fira Code', 'Microsoft YaHei', 'SimSun', monospace(Windows)或'SF Mono', 'PingFang SC', 'Hiragino Sans GB', monospace(macOS) - 中文字体名必须是英文名:
PingFang SC,不是“苹方-简”;SimSun,不是“宋体” - 多个字体用英文逗号+空格分隔,不能漏空格,否则VSCode解析失败
- 改完不用重启,实时生效;但终端字体要关掉再重开一个(
Ctrl+Shift+`)才刷新
最容易被忽略的其实是「文件编码」和「终端输出编码」的分离:改了files.encoding不影响终端,改了PYTHONIOENCODING也不影响文件读取。两者都得动手,且不能指望一个设置通吃所有场景。











