vscode新建文件默认编码非utf-8需设"files.encoding": "utf8"并确保files.autoguessencoding为false,避免插件或工作区配置覆盖;推荐utf-8无bom,禁用bom用"files.savewithbom": false。

VSCode新建文件默认编码不是UTF-8怎么办
VSCode新建文件(比如按 Ctrl+N)默认用的是系统区域设置的编码,Windows上常见是GBK或ISO-8859-1,不是UTF-8。这不是bug,是VSCode故意保留的兼容行为——但它会导致中文乱码、Git提交报错、跨平台协作出问题。
解决方法很简单:改配置项files.encoding,但要注意它只对「未保存的新建文件」生效,已保存过的文件会以自身BOM或内容推断为准,不会被这个设置覆盖。
- 打开设置(
Ctrl+,),搜files.encoding - 把
Files: Encoding设为utf8(注意不是UTF-8,大小写敏感,值必须是utf8) - 或者直接编辑
settings.json,加这一行:"files.encoding": "utf8"
为什么改了files.encoding新建文件还是GBK
常见原因是设置了files.autoGuessEncoding为true,VSCode会在打开文件时尝试猜测编码,而新建空白文件没有内容可猜,就会退回到系统默认;更麻烦的是,某些插件(比如旧版Chinese (Simplified) Language Pack)会悄悄重置这个值。
- 务必确认
files.autoGuessEncoding是false(默认就是false,但插件可能改) - 检查工作区
.vscode/settings.json是否覆盖了用户级设置 - 在命令面板运行
Developer: Inspect Editor Tokens and Scopes,看右下角显示的当前文件编码是不是UTF-8,不是就说明没生效
UTF-8 with BOM和UTF-8有什么区别,该选哪个
绝大多数场景应该选UTF-8(无BOM)。BOM是三个字节EF BB BF,Python、Node.js、Git等工具都明确建议不用BOM;Windows记事本喜欢加BOM,但VSCode默认不加,也不推荐加。
- 如果项目里已有带BOM的文件,VSCode会自动识别并显示右下角为
UTF-8 with BOM,这时别手动转——可能破坏脚本Shebang(如#!/usr/bin/env python3) - 想全局禁用BOM,加配置:
"files.saveWithBOM": false
- 某些老旧Windows工具(如PowerShell 5.1)读无BOM的UTF-8可能出问题,但那是它们的问题,不是你该迁就的
Git提交时提示fatal: UTF-8 byte sequence... not allowed
这不是VSCode的问题,是Git检测到文件名含UTF-8字符但本地locale不支持。VSCode里文件编码正确,但Git shell环境仍用GBK,导致它误判路径。
- 在Git Bash里执行:
git config --global core.precomposeUnicode true
- 或者临时改locale:
export LC_ALL=en_US.UTF-8
(Linux/macOS)或在Windows终端用chcp 65001 - VSCode集成终端需重启才能读取新环境变量,别忘了关掉再开
真正难搞的是混合编码仓库——比如同事用GBK存文件,你用UTF-8改,Git diff会全红。这种时候别只调VSCode,得统一团队的.editorconfig和gitattributes规则。











