Python 解码字节而不丢失数据

Python 解码字节而不丢失数据,python,gzip,python-3.7,zlib,Python,Gzip,Python 3.7,Zlib,输入是一个字节变量,其值为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') Tracebac

输入是一个字节变量,其值为
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'

>>a=b'\x1f\x8b\x08\x00'
>>>z=a.decode('utf-8')
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
UnicodeDecodeError:“utf-8”编解码器无法解码位置1中的字节0x8b:无效的开始字节
>>>z=a.decode('utf-8',错误='ignore')
>>>z
“\x1f\x08\x00”

预期结果
'\x1f\x8b\x08\x00'

您可以转换字符串并去除不需要的字符:

z = b'\x1f\x8b\x08\x00'
a = str(z)[2:-1]
print(a)
print(type(a))
输出:

\x1f\x8b\x08\x00
<class 'str'>

您可以转换字符串并去除不需要的字符:

z = b'\x1f\x8b\x08\x00'
a = str(z)[2:-1]
print(a)
print(type(a))
输出:

\x1f\x8b\x08\x00
<class 'str'>

在您尝试解码并将其发布到此处之前,是否可以打印a的输出?您可能只需要使用srt()函数。
print(str(z).strip('b'))
?不清楚您为什么需要此输出。您的意思是
a.hex()
?您确定浏览器不希望压缩数据编码为base64字符串吗?Base64编码是二进制blob在网络世界中通常的传递方式。@chepner:需要将其发送到浏览器。额外的b'会导致内容长度不匹配。这是一个zlib压缩输出,由TETS返回。在您尝试解码并将其发布到这里之前,您能打印a的输出吗?您可能只需要使用srt()函数。
print(str(z).strip('b'))
?不清楚您为什么需要此输出。您的意思是
a.hex()
?您确定浏览器不希望压缩数据编码为base64字符串吗?Base64编码是二进制blob在网络世界中通常的传递方式。@chepner:需要将其发送到浏览器。额外的b'会导致内容长度不匹配。它是一个zlib压缩输出,返回的是TETS。
>a=b'\x1f\x8b\x08\x00'>>b=str(a)[2:-1]'\\x1f\\x8b\\x08\\x00'
我希望内部Python表示形式是'\x1f\x8b\x08\x00'>>!您需要打印到标准输出或将变量写入文件中,以查看字符串的原样。试试看:
print(b)
你看到仅仅调用
b
print(b)
>>a=b'\x1f\x8b\x08\x00'>>b=str(a)[2:-1]'\\x1f\\x8b\\x08\\x00'
我期待一个'\x1f\x8b\x08\x00'双反斜杠是Python的内部表示形式!您需要打印到标准输出或将变量写入文件中,以查看字符串的原样。试试看:
print(b)
你看到仅仅调用
b
print(b)
之间的区别了吗。。。