2 回答
TA贡献1813条经验 获得超2个赞
这些步骤应该适用于您的情况
In [1]: r=b'\xf0\\\xebI'
#Decode to utf-8 using backslashreplace
In [2]: x=r.decode('utf-8', errors='backslashreplace')
In [3]: x
Out[3]: '\\xf0\\\\xebI'
#Replace the extra backslash
In [4]: y = x.replace('\\\\','\\')
In [5]: y
Out[5]: '\\xf0\\xebI'
#Encode to ascii and decode to unicode-escape
In [6]: z = y.encode('ascii').decode('unicode-escape')
In [7]: z
Out[7]: 'ðëI'
请注意,这也适用于双斜杠,您的正常情况
r=b'\xf0\\xebI'
x=r.decode('utf-8', errors='backslashreplace')
y = x.replace('\\\\','\\')
z = y.encode('ascii').decode('unicode-escape')
print(z)
#ðëI
TA贡献1808条经验 获得超4个赞
数据似乎被编码为 latin-1 *,因此最简单的解决方案是解码然后删除反斜杠。
>>> r=b'\xf0\\\xebI'
>>> r.decode('latin-1').replace('\\', '')
'ðëI'
*我猜是 latin-1(也称为 ISO-8859-1)——响应的内容类型标头应该指定使用的编码,它可能是其他 ISO-8859-* 编码之一。
添加回答
举报