将Python字节类型转换为字符串

5 投票
1 回答
2880 浏览
提问于 2025-04-16 04:20

我正在用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

撰写回答