VSCode默认UTF-8编码,遇GBK等非UTF-8文件易乱码;可通过右下角编码提示重新打开或保存,设置files.encoding可指定默认编码,BOM文件需注意兼容性,自动检测失败时可手动尝试常见编码或借助扩展。

VSCode 默认使用 UTF-8 编码打开文件,但遇到非 UTF-8 编码(如 GBK、ISO-8859-1)的文件时,中文常显示为乱码。问题根源在于 VSCode 未正确识别或未按原始编码读取文件,而非文件本身损坏。
查看并切换当前文件编码
右下角状态栏会显示当前文件编码(如“UTF-8”或“GBK”)。点击该区域可快速选择重新以指定编码打开,或保存为其他编码。注意区分两个操作:
- “通过编码重新打开”:仅改变当前视图解码方式,不修改文件内容
- “以编码保存”:将文件内容按新编码写入磁盘,会实际更改文件字节
设置默认编码避免反复切换
在设置中搜索 files.encoding,将其设为 utf8(推荐)或根据项目习惯设为 gbk(如老旧 Windows 项目)。此设置影响新建文件和未带 BOM 的文件的默认解读方式,但不会覆盖已有文件的编码提示逻辑。
若需对特定语言强制编码,可在 settings.json 中添加语言专属配置:
"files.encoding": "utf8",
"[javascript]": { "files.encoding": "utf8" },
"[html]": { "files.encoding": "utf8" },
"[plaintext]": { "files.encoding": "gbk" }
处理带 BOM 和无 BOM 的 UTF-8 文件
BOM(Byte Order Mark)是 UTF-8 文件开头的三个特殊字节(EF BB BF),部分编辑器依赖它识别编码,但多数现代工具(包括 Node.js、Python 解释器)并不需要,甚至可能出错。VSCode 默认能识别带 BOM 的 UTF-8,但若文件无 BOM 却被误判为其他编码,可手动点击右下角编码 → “通过编码重新打开” → 选“UTF-8”。
如需统一去除 BOM 或批量添加,可用扩展如 Remove BOM 或终端命令(Linux/macOS):
sed -i '1s/^\xEF\xBB\xBF//' file.txt
自动检测编码失败时的应对方法
VSCode 的自动编码检测(基于 jschardet)对短文本或混合编码支持有限。若打开后乱码且右下角未提示正确编码,可尝试:
- 先用记事本或 Sublime Text 打开确认原始编码
- 在 VSCode 中点击右下角 → “通过编码重新打开” → 依次尝试 GBK、GB2312、ISO-8859-1
- 安装扩展 Auto-encoding(增强检测能力)或 Encoding Helper(快捷切换)










