VSCode 保存文件自动使用 UTF-8(无 BOM)需设 files.encoding 为 utf8 并关闭 files.autoGuessEncoding;新建文件默认编码也需在用户设置中设 files.encoding 为 utf8;注意 Workspace 设置和插件可能覆盖该配置。

VSCode 怎么让保存文件自动用 UTF-8(无 BOM)
VSCode 默认保存为 UTF-8,但 Windows 上部分旧工具依赖“无 BOM”版本,否则可能报 Unexpected token 或中文乱码。关键不是改设置,而是关掉那个偷偷加 BOM 的开关。
- 打开设置(
Ctrl+,),搜files.autoGuessEncoding→ 设为false(避免误判导致编码错乱) - 搜
files.encoding→ 设为utf8(这是 VSCode 内部标识,等价于 UTF-8 无 BOM) - 不要设成
utf8bom,它会强制写入 BOM,Git 提交时容易触发行尾或编码警告 - 如果已存在带 BOM 的文件,右下角状态栏点击编码名(如
UTF-8 with BOM)→ 选Save with Encoding→UTF-8
新建文件默认编码怎么固定为 UTF-8
VSCode 新建文件(Ctrl+N)不继承项目配置,靠全局默认值。它不会读 .editorconfig 或 .vscode/settings.json 里的 files.encoding,必须显式声明。
- 打开用户设置(
Ctrl+,→ 右上角切换到Users标签) - 搜
files.defaultLanguage→ 不用动这个,它只影响语言模式,和编码无关 - 搜
files.encoding→ 确保值是utf8,且作用域是User(不是 Workspace) - 验证:新开一个未命名文件(
Ctrl+N),右下角应显示UTF-8,不是Auto或空
为什么改了 settings.json 还不生效
常见原因是配置层级冲突:Workspace 设置会覆盖 User 设置,而某些插件(比如 Prettier、ESLint)可能通过 files.encoding 覆盖你手动写的值。
- 检查当前窗口右下角是否显示
Workspace Settings,如果是,打开.vscode/settings.json,删掉里面重复的"files.encoding"字段 - 运行命令面板(
Ctrl+Shift+P)→ 输入Developer: Toggle Developer Tools→ 控制台里搜encoding,看有没有插件在 runtime 修改它 - 禁用所有插件后测试,再逐个启用,定位干扰源(特别是“File Utils”“Auto Rename Tag”这类轻量插件常偷偷改编码)
Git 提交后编码异常怎么办
Git 本身不处理编码,但 Windows 和 macOS/Linux 对换行符 + 编码组合敏感。最典型现象是:本地看着正常,CI 报 invalid byte sequence in UTF-8。
- 确保
.gitattributes文件存在,内容加一行:* text=auto eol=lf(强制 LF 换行,避免 CRLF + BOM 叠加) - 执行
git add --renormalize .重算所有文件的换行和编码标记 - VSCode 中关闭
files.enableTrash(防止删错临时文件),再手动用iconv -f utf-8-bom -t utf-8 file.js > file_fixed.js批量清理 BOM(仅限 Linux/macOS 终端)
真正麻烦的是混合编码项目:有些 JSON 是 GBK,有些 JS 是 UTF-8。VSCode 不支持单文件多编码,只能靠右下角手动切——这点没法自动化,得接受。


















