vscode中文乱码需分三类处理:文件编码错误(gbk/utf-8不匹配)、终端输出编码不对(powershell/cmd代码页)、字体不支持中文;须分别配置files.encoding、terminal.env.pythonioencoding及editor.fontfamily。

VSCode 中文乱码不是“文件坏了”,而是编辑器读错了、写错了、或压根没用对字体——三类问题必须分开处理,混着调只会越调越乱。
右下角点编码后选 GBK 才能正常显示?说明文件是 GBK 编码
VSCode 默认用 UTF-8 解码所有文件,但 Windows 上很多旧项目、记事本保存的 .txt/.py/.bat 文件实际是 GBK(即 CP936)编码。此时直接打开必然乱码,表现为中文变问号、方块、或一串 Unicode 转义(如 \u4f60\u597d)。
- 先点击右下角状态栏的编码标识(如
UTF-8),选Reopen with Encoding→GBK,内容立刻恢复——这步不改文件,只改本次读法 - 确认显示正常后,再点右下角编码 →
Save with Encoding→UTF-8,文件才真正转码并覆写 - 别选
UTF-8 with BOM:Python、Git、Node.js 都讨厌 BOM,会导致import失败、git diff显示\ufeff等异常 - 如果项目里混着 .reg 或 .bat 文件(它们依赖 GBK 执行),不要全局设
"files.encoding": "utf8",否则双击运行就报错
新建文件粘贴中文后一保存就乱码?是写入编码不匹配
VSCode 新建文件时状态栏标着 UTF-8,但若系统区域设为中文(中国),部分底层 API 仍会以 GBK 写入——导致你粘贴“你好”再 Ctrl+S,文件实际存的是 GBK 字节,却标称 UTF-8,下次打开就崩。
- 新建文件后,**先点右下角 →
Save with Encoding→UTF-8**,再粘贴、再保存,绕过写入路径陷阱 - 永久解决:在
settings.json加两行:"files.autoGuessEncoding": false(关掉玄学猜测)、"files.encoding": "utf8"(强制新建即 UTF-8) - 注意:
"utf8"必须全小写,写成"UTF-8"或"UTF8"VSCode 直接忽略 - 老项目有大量 GBK 文件?用
files.associations单独配:"*.txt": "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', monospace',改完要关掉当前终端再Ctrl+Shift+`重开
编辑器里中文发虚、断笔、或注释里字被切掉?八成是字体链没配对
VSCode 不自带中文字体,靠系统 fallback。如果 editor.fontFamily 里没列中文字体名,它就会用 Consolas 或 Monaco 渲染中文——结果就是方块、模糊、或等宽失衡。
- Windows 用户填:
"editor.fontFamily": "'Consolas', 'Microsoft YaHei', 'SimSun', monospace" - macOS 用户填:
"editor.fontFamily": "'SF Mono', 'PingFang SC', 'Hiragino Sans GB', monospace" - Linux 用户填:
"editor.fontFamily": "'Fira Code', 'Noto Sans CJK SC', 'WenQuanYi Micro Hei', monospace" - 字体名必须用英文名(如
PingFang SC,不是“苹方-简”),逗号后加空格,末尾保留monospace保底 - 改完不用重启,实时生效;如果还糊,检查系统 DPI 缩放是否非 100%,可加
"window.zoomLevel": 0强制还原
最常被忽略的点:文件编码、终端编码、字体链,三者必须各自独立调通,不能指望一个设置解决全部。尤其是 files.autoGuessEncoding: false 和 terminal.integrated.env.windows.PYTHONIOENCODING 这两个开关,不打开,其他操作基本白做。











