vscode新建文件默认非utf-8是因fallback至系统区域设置(如windows中文版为gbk),必须同时设"files.encoding":"utf8"、"files.autoguessencoding":false和"files.savewithbom":false,否则ctrl+n输中文即乱码;该配置仅对全新未保存文件生效,已有文件需手动reopen with encoding再save with encoding转码。

新建文件默认不是 UTF-8,是因为 VSCode 会 fallback 到系统区域设置(Windows 中文版 = GBK),必须显式设 files.encoding 为 utf8 并关掉自动猜测,否则 Ctrl+N 一输中文就变方块或“浣犲ソ”。
为什么改了 files.encoding 还是 GBK?
常见原因是 files.autoGuessEncoding 没关——它默认是 true,但新建空白文件没内容可猜,VSCode 就直接退回到系统编码(如 CP936),完全无视你写的 "files.encoding": "utf8"。
-
files.autoGuessEncoding: false是硬性前提,不加这行,其他都白设 - 值必须是
utf8(全小写、无短横、无 BOM),写成UTF-8或UTF8VSCode 直接忽略 - 该设置只影响「全新未保存的文件」,对已存在文件(哪怕刚新建但已点过保存)完全无效
- 某些中文语言包插件会偷偷重置
files.autoGuessEncoding,建议检查插件行为
怎么正确配置全局默认编码?
打开命令面板(Ctrl+Shift+P),输入并选择 Preferences: Open Settings (JSON),在 settings.json 里添加这三行:
{
"files.encoding": "utf8",
"files.autoGuessEncoding": false,
"files.saveWithBOM": false
}
-
"files.saveWithBOM": false必加:避免 Python/Shell 脚本因 BOM(\xef\xbb\xbf)报SyntaxError: Non-UTF-8 code starting with '\xff' - 不要用设置界面下拉菜单选 “UTF-8”,它可能写成
UTF-8字符串而非 VSCode 认的utf8标识 - 如果项目根目录有
.vscode/settings.json,它会覆盖用户级设置,务必同步检查并修改
已有乱码文件不能靠改设置修复
新建文件设对了,不代表你打开一个旧的 GBK 文件就自动变正常——VSCode 会按文件实际字节推断编码(比如看到 0xA3A8 就倾向识别为 GBK),此时 files.encoding 不参与。
- 右下角点当前编码(如显示
GBK)→ 选Reopen with Encoding→GBK,确认中文显示正常(这是验证原始编码) - 再点右下角 →
Save with Encoding→utf8(确保不带 BOM),这才是真正转码 - 千万别跳过第一步直接
Save with Encoding→utf8:那是把 GBK 字节流当 UTF-8 解码再存,结果是双乱码,不可逆 - 批量处理慎用插件,手动逐个操作更稳妥;尤其含 Shebang(如
#!/usr/bin/env python3)的脚本,BOM 错误会导致直接执行失败
最易被忽略的是:新建文件首次保存时,VSCode 可能仍按系统编码写入字节(尤其粘贴过中文后),所以哪怕配置全对,也建议新建后先点右下角 → Save with Encoding → utf8 再开始编辑——这是启动阶段最保险的一次手动锚定。











