将python字节类型更改为字符串

时间:2010-09-19 18:47:56

标签: python urllib

我正在使用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调用中收到的字节对象转换为字符串?

1 个答案:

答案 0 :(得分:6)

检查以确保您的响应正文未被gzip压缩。相信它的传输编码或响应标题,我对你处理压缩数据而不是字符集编码问题充满信心。

更新:意识到我养成了不解释/提供足够细节的坏习惯。对于Python gzip字节字符串,它们始终以1f8b开头。有人在这里更好地解释https://stackoverflow.com/a/3703300/9908