必须同时设置"files.encoding": "utf8"和"files.autoguessencoding": false,否则vscode会优先按内容自动猜测编码(如gbk),导致乱码;新建文件才遵循默认utf-8,已有文件需手动reopen with encoding再save with encoding修正。

必须同时设置 files.encoding 和 files.autoGuessEncoding,否则“默认 UTF-8”只是假象——VSCode 仍会按内容猜编码,尤其在 Windows 上大概率 fallback 到 GBK。
为什么改了 files.encoding 还是乱码?
因为 VSCode 的自动探测逻辑优先级高于默认设置。哪怕你设了 "files.encoding": "utf8",只要 files.autoGuessEncoding 是 true(默认值),它打开一个无 BOM、含中文的旧文件时,就会根据字节模式“猜”成 GBK 或 ISO-8859-1,完全无视你的默认项。
- 右下角状态栏显示
GBK或ISO-8859-1就是典型表现 - 这种“猜中”的结果会被缓存,下次再打开同一文件,直接沿用上次猜测结果
- 改设置后新建文件确实走 UTF-8,但已有文件不受影响——这不是 bug,是设计如此
真正生效的配置只有这两行
打开 settings.json(Ctrl+, → 右上角点“打开设置 (JSON)”),添加:
使用ydata-profiling(前身为pandas-profiling)生成全面的数据质量报告,包含相关性分析、缺失值模式和基数检测。导出交互式HTML仪表板和JSON摘要。
{
"files.encoding": "utf8",
"files.autoGuessEncoding": false
}
-
utf8是 VSCode 内部标识,等价于 UTF-8 无 BOM;别写UTF-8或utf8bom,后者会插入 BOM,Python/Shell 脚本可能报SyntaxError: Non-UTF-8 code starting with '\xff' -
files.autoGuessEncoding: false是关键开关,关掉它,VSCode 才会老老实实按files.encoding读新文件、存所有文件 - 全局设置对新文件和保存动作生效;已有文件仍需手动处理(见下一条)
已有乱码文件怎么救?不是点一下就完事
右下角点击当前编码名(如 GBK)→ 选 Reopen with Encoding → UTF-8,这只是临时重解码,不改文件本身。
- 如果重开后显示正常,再点一次右下角 →
Save with Encoding→UTF-8,这才真正把内容用 UTF-8 写回磁盘 - 如果重开后仍是乱码,说明文件原本就是 GBK 编码,此时得先
Reopen with Encoding→GBK,再Save with Encoding→UTF-8 - Git 提交前务必确认文件真实编码:用
file -i filename.py(Linux/macOS)或 PowerShell 的Get-Content -Encoding Byte检查头几个字节
团队协作时最容易被忽略的坑
你本地设好了,不代表别人拉代码不乱码。问题常出在历史文件没清理干净。
- Windows 用户用记事本保存过 .py 文件?它默认用 GBK + BOM,即使你设了
utf8,VSCode 仍可能识别为UTF-8 with BOM,导致脚本首行#!/usr/bin/env python3后多出不可见字符而执行失败 - 项目混有 GBK 遗留文件时,别全局设置,改用工作区设置:
.vscode/settings.json里只写那两行,避免影响其他项目 -
[python]这类语言专属设置能覆盖全局,但仅对新建文件有效;已打开的 Python 文件仍按原缓存编码读取
真正麻烦的从来不是加两行配置,而是找出哪些文件实际编码和声明不符——它们不会因为你改了设置就自动变干净。










