【发布时间】:2010-10-30 08:50:24
【问题描述】:
我真的对codecs.open function 感到困惑。当我这样做时:
file = codecs.open("temp", "w", "utf-8")
file.write(codecs.BOM_UTF8)
file.close()
它给了我错误
UnicodeDecodeError: 'ascii' 编解码器无法在位置解码字节 0xef 0:序数不在范围内(128)
如果我这样做:
file = open("temp", "w")
file.write(codecs.BOM_UTF8)
file.close()
效果很好。
问题是为什么第一种方法会失败?以及如何插入 bom?
如果第二种方法是正确的做法,那么使用codecs.open(filename, "w", "utf-8")的意义何在?
【问题讨论】:
-
不要在 UTF-8 中使用 BOM。 请。
-
@tchrist 嗯?为什么不呢?
-
@SalmanPK BOM 在 UTF-8 中不需要,只会增加复杂性(例如,您不能仅连接 BOM 文件并使用有效文本生成结果)。见this Q&A;不要错过Q下的大评论
标签: python utf-8 character-encoding byte-order-mark