mechanize中的UnicodeDecodeError问题

3 投票
1 回答
1497 浏览
提问于 2025-04-15 19:32

我从一个网站通过 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 来检测,这个工具使用起来非常简单。

撰写回答