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'
-是否存在尾数问题。