atom无法自动识别无bom的gbk等编码,乱码时需手动点击右下角编码标识选择“reopen with encoding”尝试gb18030等候选编码,成功后用“save with encoding”固化为utf-8或gbk,config.cson仅影响新建文件。

Atom 无法自动识别 GBK、GB18030、Shift-JIS 等无 BOM 的非 UTF-8 文件,所谓“设置文档编码”本质是手动指定读取方式,而非一键转码。乱码时别改 config.cson,先点右下角编码标识重载。
点击右下角编码标识切换读取方式
Atom 打开文件时不会猜编码,状态栏显示的 UTF-8 只是它默认用的读取方式,不是文件真实编码。遇到中文乱码,第一步永远是人工干预:
- 点击编辑器右下角当前显示的编码名(如
UTF-8或ISO-8859-1) - 在弹出菜单中选
Reopen with Encoding→GBK(或GB18030、Windows 1252) - 内容瞬间变正常,说明猜对了;仍乱码就换下一个常见编码挨个试
- 这个操作只影响本次打开,不修改文件本身
Save With Encoding 才真正改变文件编码
确认显示正常后,必须主动保存才能固化新编码,否则下次打开还是按原编码读:
- 右键编辑区 →
Save With Encoding,或点击右下角编码名 →Save With Encoding - 选
UTF-8(推荐)或GBK(仅当需兼容旧系统时) - 注意:
UTF-8 with BOM会导致 JS/JSON 解析报Unexpected token \uFEFF,除非对接极老 Windows 工具,否则禁用 - 如果选了
GBK保存,该文件就真变成 GBK 编码了,Git diff 会显示大量变化
config.cson 设置只影响新建文件,不影响已有文件
很多人改了 core.fileEncoding: "utf8" 却发现旧文件还是乱码,是因为这个配置只控制两件事:
- 新建空白文件(如
Cmd+N)默认用什么编码保存 - 粘贴纯文本时默认用什么编码存入缓冲区
- 它完全不干预已有文件的读取逻辑——Atom 优先按文件头 BOM 或上次保存时的编码加载
- 手写
config.cson容易因缩进、逗号或大小写(必须小写utf8,不能写UTF-8)出错;更稳的方式是 Settings → Core →Default Encoding下拉选utf8
批量转码不能靠 Atom,得用命令行工具
项目里混着 UTF-8、GBK、UTF-8-BOM 多种编码时,Atom 单点操作毫无意义:
- 用
iconv -f GBK -t UTF-8 input.txt > output.txt手动转单个文件 - 批量处理:Linux/macOS 上用
find . -name "*.txt" -exec iconv -f GBK -t UTF-8 {} -o {}.utf8 \; - 检测编码类型可用
enca -L zh file.txt(需先brew install enca或apt install enca) - 转完后配
.editorconfig锁定后续行为:charset = utf-8,防止新人再存出 GBK
真正容易被忽略的是:Atom 的「读取编码」和「保存编码」是两个独立开关。你调的只是后者,而乱码几乎全是前者没对上。别指望 Auto Detect 按钮——它基本只认 BOM,没 BOM 的 GBK 文件在 Atom 里永远显示为乱码,直到你亲手点开菜单选对一次。











