【问题标题】:Change python byte type to string将python字节类型更改为字符串
【发布时间】:2010-09-19 18:47:56
【问题描述】:

我正在使用 python 来玩 stackoverflow API。我运行以下命令:

f = urllib.request.urlopen('http://api.stackoverflow.com/1.0/stats')
d = f.read()

d 的类型是 'bytes' 类,如果我打印它,它看起来像:

b'\x1f\x8b\x08\x00\x00\x00 .... etc

我试过d=f.read().decode('utf-8'),因为那是标题中指示的字符集,但我得到了一个 'utf8' codec can't decode byte 0x8b in position 1"错误信息

如何将我从 urllib.request 调用中收到的字节对象转换为字符串?

【问题讨论】:

    标签: python urllib


    【解决方案1】:

    检查以确保您的响应正文未经过 gzip 压缩。相信它的传输编码或响应标头之类的,我非常有信心您处理压缩数据而不是字符集编码问题。

    更新:意识到我有不解释/提供足够详细信息的坏习惯。对于 Python gzip'd 字节字符串,它们总是以 1f8b 开头有人在这里解释得更好https://stackoverflow.com/a/3703300/9908

    【讨论】:

    • 你明白了。我用以下方法解决了它: import zlib decompressed_data=zlib.decompress(f.read(), 16+zlib.MAX_WBITS)
    猜你喜欢
    • 1970-01-01
    • 2012-06-04
    • 1970-01-01
    • 1970-01-01
    • 2018-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多