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

Python读取文本文件时为何出现前置字符?

解决读取文本时出现\ufeff字符的问题

嘿,这个问题我太熟悉了!你看到的\ufeff其实是UTF-8 BOM(字节顺序标记),这是Windows系统下部分文本编辑器(比如自带的记事本)默认保存UTF-8格式文件时,会自动添加的一个特殊标记。

问题成因

当你用Python默认的open()函数读取文件时,它的默认编码在Windows环境下不会自动识别并忽略这个BOM标记,所以就把它当成了普通的文本字符读出来,导致内容前多了这个奇怪的符号。从你的REPL记录里也能看到,文件的编码是cp65001(也就是UTF-8),但这个编码本身不处理BOM。

解决办法

有两种思路可以搞定这个问题:

1. 读取时指定能识别BOM的编码

直接在open()函数里指定encoding="utf-8-sig",这个编码会自动跳过UTF-8文件开头的BOM标记:

with open("text.txt", encoding="utf-8-sig") as f:
    content = f.read()
print(content)  # 输出就是干净的'1234'

2. 保存文件时避免生成BOM

如果是你自己保存的文件,保存时明确指定编码为utf-8(不带BOM的标准格式),这样后续读取就不会有这个问题了:

with open("text.txt", "w", encoding="utf-8") as f:
    f.write("1234")

说白了就是Windows记事本这类工具在保存UTF-8文件时的“小特性”搞的鬼,用utf-8-sig编码读取就能完美解决~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 10:02:48