Python utf-16字符串解码故障
我正在使用Python utf-16字符串解码故障,python,python-3.x,decode,utf,Python,Python 3.x,Decode,Utf,我正在使用python3.3。我一直在尝试解码一个字符串,它看起来像这样: b'\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\x03\xed:\xf9w\xdaH\xd2?\xcf\xbc.... 继续。但是,每当我尝试使用str.decode('utf-16')对该字符串进行解码时,我都会收到一个错误,提示: “utf16”编解码器无法解码54-55位置的字节:非法UTF-16代理 我不确定如何解码这个字符串。gzip压缩了数据,所以我猜您的数据是gzip压缩的
python3.3
。我一直在尝试解码一个字符串,它看起来像这样:
b'\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\x03\xed:\xf9w\xdaH\xd2?\xcf\xbc....
继续。但是,每当我尝试使用str.decode('utf-16')
对该字符串进行解码时,我都会收到一个错误,提示:
“utf16”编解码器无法解码54-55位置的字节:非法UTF-16代理
我不确定如何解码这个字符串。gzip压缩了数据,所以我猜您的数据是gzip压缩的。解码前先尝试
import io
import gzip
# this raises IOError because `buf` is incomplete. It may work if you supply the complete buf
buf = b'\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\x03\xed:\xf9w\xdaH\xd2?\xcf\xbc'
with gzip.GzipFile(fileobj=io.BytesIO(buf)) as f:
content = f.read()
print(content.decode('utf-16'))
这意味着它不是真正的UTF16。你从哪儿弄来的绳子?可能是UCS2?如果您只解码到位置53,结果看起来正常吗?这可能有助于确定您的假设
utf16
是否正确。我是从Twisted获得的,我在HandlerResponsePart(self,buffer)
函数中插入了print(buffer)
。因此,基本上,您正在查看的编码字符串应该是HTML,我从Twisted Proxieso接收到的。因此,实际字符串非常大,我粘贴的内容只是整个字符串的一小部分。请尝试显式解码为'UTF-16BE'
和'UTF-16LE'
-是否存在尾数问题。