【问题标题】:Writing non-ascii content from pymongo to file将非 ASCII 内容从 pymongo 写入文件
【发布时间】:2015-02-20 01:21:01
【问题描述】:

我有一个将网络流量存储到 Mongo DB 的系统,我现在想从特定连接中检索数据包,然后将所有数据转储到磁盘上的文件中。在具体情况下,它是压缩数据,因此以 \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 字符串,但是当写入文件时,而不是写入 @ 987654325@ 结果是\x1f\xc2\x8b\x08\x00)。

此外,基本上在这里阅读任何问题和适当的答案并没有真正让我失望 :-( 有什么建议吗?在 Python 中解码 gzip 数据不是一种选择,因为数据可能是任意二进制 blob。

【问题讨论】:

    标签: python mongodb encoding pymongo bson


    【解决方案1】:

    原来使用 ISO-8859-1 作为编码可以解决问题...

    【讨论】:

      猜你喜欢
      • 2014-04-04
      • 2019-04-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-28
      • 2012-05-18
      • 1970-01-01
      • 1970-01-01
      • 2019-12-11
      相关资源
      最近更新 更多