【发布时间】:2019-11-11 13:47:52
【问题描述】:
输入是一个字节变量,值为b'\x1f\x8b\x08\x00',需要将其转换为字符串。
预期输出为'\x1f\x8b\x08\x00'。
我如何做到这一点?
我正在使用 zlib 来获取输入的 gzip 数据,并且需要将其转换为浏览器的字符串以进行解压缩。
我已尝试添加errors='ignore' 参数。
我尝试提供“latin1”编码,但浏览器无法解压缩数据。
>>> a = b'\x1f\x8b\x08\x00'
>>> z = a.decode('utf-8')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8b in position 1: invalid start byte
>>> z = a.decode('utf-8', errors = 'ignore')
>>> z
'\x1f\x08\x00'
预期结果'\x1f\x8b\x08\x00'
【问题讨论】:
-
你能在尝试解码之前打印 a 的输出并将其发布到这里吗?您可能只需要使用 srt() 函数。
-
print(str(z).strip('b'))?目前尚不清楚您为什么需要此输出。 -
你的意思是
a.hex()? -
您确定浏览器不会将压缩数据编码为 base64 字符串吗? Base64 编码是二进制 blob 通常在网络世界中传递的方式。
-
@chepner:需要将其发送到浏览器。额外的 b' 导致内容长度不匹配。它是一个 zlib 压缩输出,返回字节。
标签: python gzip python-3.7 zlib