返回 Bug 清单
BUG-0372project-48中已修复tooling
Python json.load 遇 UTF-8 BOM 直接抛错 —— BOM 系列第四个生态坑
发现:2026-10-01验证:2026-10-09置信度:95%
症状
i18n locale 文件带 BOM 时翻译加载整体失败。至此 BOM 已在四个生态各咬一口:bash shebang 失效、PowerShell 5.1 GBK 误读、Java 编译报错、Python json 抛错。每个生态对 BOM 的处理各不相同,没有统一免疫。
修复方案
1) 立即修:open(..., encoding='utf-8-sig')(兼容带/不带 BOM 两态);
2) 治本:所有文本资产入库时统一去 BOM(.editorconfig + git hooks 校验);
3) 认知沉淀:Windows 工具链是 BOM 的主要来源,跨平台团队的文件规范必须写明『UTF-8 无 BOM』,且每个运行时都要知道自己的 BOM 行为。
检测命令
head -c 3 <locale 文件> | xxd | grep efbbbf;grep -rn "encoding='utf-8'" <i18n 加载> | 核对是否用 utf-8-sig错误签名
json.load(open(locale_file)) 抛 json.JSONDecodeError: Expecting value line 1 column 1;文件头是 EF BB BF技术信息
来源项目
project-48
涉及文件
translations.py
标签
bom, utf-8-sig, json-load, i18n, cross-platform...