You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python读取文件时获取到开头65279(BOM)字符的问题排查

问题分析与解决

核心原因

  • 绝对不是Python添加的BOM,文件本身就包含UTF-8 BOM(U+FEFF)。VS Code显示编码为UTF-8而非UTF-8 with BOM,是因为它会自动识别并隐藏BOM,不会将其作为可见内容展示,但文件字节流开头确实存在EF BB BF这三个BOM字节。
  • 你用head -c 1看到的是n,大概率是终端的处理导致:EF字节属于不可见字符,终端直接跳过不显示,你实际看到的是BOM之后的n;也有可能是你误输入成head -n 1(读取第一行内容),该命令会直接输出文本部分,自动跳过BOM。

Python避免读入BOM的方法

Python默认打开文件时不会自动处理UTF-8 BOM,因此会将其读为U+FEFF字符。可以通过以下两种方式解决:

  1. 使用utf-8-sig编码打开文件,该编码会自动识别并跳过UTF-8 BOM:
first = open('/path_to_file/file', encoding='utf-8-sig').read(1)
  1. 手动检查并跳过BOM字符:如果已用默认编码打开文件,可判断第一个字符是否为U+FEFF,若是则重新读取下一个字符:
with open('/path_to_file/file') as f:
    first_char = f.read(1)
    if first_char == '\ufeff':
        first_char = f.read(1)

内容的提问来源于stack exchange,提问作者Big boy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 20:55:11