24

我正在用 python 编写一个网络爬虫,它涉及从网站上获取头条新闻。

头条新闻之一应该读到:臀部也来了

但相反,它说:Hip 也来了

这里出了什么问题?

4

2 回答 2

51

这是一个编码错误 - 所以如果它是一个 unicode 字符串,这应该修复它:

text.encode("windows-1252").decode("utf-8")

如果它是纯字符串,则需要一个额外的步骤:

text.decode("utf-8").encode("windows-1252").decode("utf-8")

这两个都会给你一个 unicode 字符串。

顺便说一句 - 要发现这样的一段文本是如何由于编码问题而被破坏的,您可以使用chardet

>>> import chardet
>>> chardet.detect(u"And the Hip’s coming, too")
{'confidence': 0.5, 'encoding': 'windows-1252'}
于 2012-10-28T16:36:30.503 回答
13

您需要正确解码源文本。源文本很可能是 UTF-8 格式,而不是 ASCII。

因为您没有为您的问题提供任何上下文或代码,所以无法直接给出答案。

我建议你研究一下 Python 中如何完成 unicode 和字符编码:

http://docs.python.org/2/howto/unicode.html

于 2012-10-28T16:26:34.310 回答