mechanize中的UnicodeDecodeError问题
我从一个网站通过 mechanize 收到了以下字符串:
'We\x92ve'
我知道 \x92 代表的是’这个字符。我想把这个字符串转换成 Unicode:
>> unicode('We\x92ve','utf-8')
UnicodeDecodeError: 'utf8' codec can't decode byte 0x92 in position 2: unexpected code byte
我哪里做错了呢?
补充说明:我尝试使用 'utf-8' 的原因是:
>> response = browser.response()
>> response.info()['content-type']
'text/html; charset=utf-8'
现在我明白了,我不能总是相信 content-type 这个头信息。
1 个回答
4
\x92
代表的是 ’
,没错,但它是在 Windows-1252 编码下的,而不是 UTF-8 编码:
>>> print unicode('We\x92ve','1252')
We’ve
如果你不知道你的源数据是什么编码,可以使用 chardet 来检测,这个工具使用起来非常简单。