urllib2开启者提供错误的字符集

tha*_*ble 4 python urllib2 utf-8 character-encoding

当我打开网址并阅读它时,我无法识别它.但是,当我检查内容标题时,它表示它被编码为utf-8.因此我尝试将其转换为unicode并且它抱怨UnicodeDecodeError:'ascii'编解码器无法使用unicode()解码位置1中的字节0x8b:序号不在范围(128)中.

.encode("utf-8")产生UnicodeDecodeError:'ascii'编解码器无法解码位置1的字节0x8b:序数不在范围内(128)

.decode("utf-8")产生UnicodeDecodeError:'utf8'编解码器无法解码位置1的字节0x8b:无效的起始字节.

我已经尝试了所有我能想到的东西(我对编码不是很擅长)

如果我能让这个工作,我会很高兴.谢谢.

Van*_*uan 7

这是一个常见的错误.服务器发送gzip压缩流.

你应该先解压缩它:

response = opener.open(self.__url, data)
if response.info().get('Content-Encoding') == 'gzip':
    buf = StringIO.StringIO( response.read())
    gzip_f = gzip.GzipFile(fileobj=buf)
    content = gzip_f.read()
else:
    content = response.read()
Run Code Online (Sandbox Code Playgroud)