python文件写入utf-8_关于utf 8:用Python写入UTF-8文件

在尝试使用codecs.open函数以UTF-8格式写入Python文件时,作者遇到了UnicodeDecodeError。问题出在codecs.BOM_UTF8是字节字符串而非Unicode字符串。解决方法是直接写入Unicode字符串的字节顺序标记(u'ufeff')或者使用'utf-8-sig'编码。讨论中还提到了其他编码和写入文件的技巧。
摘要由CSDN通过智能技术生成

我真的对codecs.open function很困惑。当我这样做的时候:

file = codecs.open("temp","w","utf-8")

file.write(codecs.BOM_UTF8)

file.close()

它给了我错误

UnicodeDecodeError: 'ascii' codec can't decode byte 0xef in position

0: ordinal not in range(128)

如果我这样做:

file = open("temp","w")

file.write(codecs.BOM_UTF8)

file.close()

它很好用。

问题是为什么第一种方法失败了?如何插入物料清单?

如果第二种方法是正确的方法,那么使用codecs.open(filename,"w","utf-8")有什么意义?

不要使用UTF-8格式的BOM。拜托。

@克里斯蒂安?为什么不呢?

@UTF-8中不需要salmanpk-bom,只会增加复杂性(例如,不能将bom的文件和结果与有效文本连接在一起)。看到这个问题,不要错过问题下面的重要评论。

我认为问题在于codecs.BOM_UTF8是字节字符串,而不是Unicode字符串。我怀疑文件处理程序试图根据"我打算将Unicode作为UTF-8编码文本写入,但您给了我一个字节字符串"来猜测您真正的意思!

尝试直接为字节顺

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值