将Python字节类型转换为字符串
我正在用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')
来转换,因为在头部信息里显示的字符集是utf-8,但我收到了一个错误信息:'utf8' codec can't decode byte 0x8b in position 1"
我该如何把从urllib.request调用中得到的字节对象转换成字符串呢?
1 个回答
6
检查一下你的响应内容是否没有被压缩成gz格式。可能是响应头里的传输编码出了问题,我很确定你遇到的是压缩数据,而不是字符集编码的问题。
更新:我意识到我有个坏习惯,就是不够详细地解释。对于Python中的gzip压缩字节串,它们总是以1f8b开头。这里有人解释得更清楚 https://stackoverflow.com/a/3703300/9908