我有一个将网络流量存储到Mongo数据库中的系统,现在我想从特定连接中检索数据包,然后将所有数据转储到磁盘上的文件中。在具体情况下,它是gziped数据,因此以\x1f\x8b\x08\x00
我检索数据的代码如下:
with codecs.open("filename", "wb", "utf-8") as fh:
for packet in packets:
fh.write(packet["data"])
执行代码时,出现错误
UnicodeDecodeError: 'ascii' codec can't decode byte 0x8b in position 1: ordinal not in range(128)
已经使用过Python 2,我意识到编码总是很棘手。我已经尝试了许多编码和解码组合,但是Python失败并出现类似的消息,或者生成的文件已损坏(例如,在其上抛出.decode('latin-1')
会产生正确的unicode字符串但是当写入文件时,而不是撰写\x1f\x8b\x08\x00
结果为\x1f\xc2\x8b\x08\x00
)。
此外,基本上阅读任何问题和相应的答案并不是真的我:-(任何建议?解码Python中的gziped数据不是一个选项,因为数据可能是任意的二进制blob。
答案 0 :(得分:0)
使用ISO-8859-1作为编码可以解决问题......