我通过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'
现在,我发现我无法始终信任内容类型标题。
答案 0 :(得分:4)
\x92
代表’
好,但它在Windows-1252编码中执行,而不是在UTF-8中执行:
>>> print unicode('We\x92ve','1252')
We’ve
如果您不知道源数据的编码方式,可以使用chardet(极易于使用)来检测它。