在Python中解码UTF-8字符串

use*_*005 15 python python-2.7

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

其中一个标题应该是:而且嘻哈也会来

但相反它说:而且Hip也来了

这里出了什么问题?

Zer*_*eus 30

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

text.encode("windows-1252").decode("utf-8")
Run Code Online (Sandbox Code Playgroud)

如果它是一个普通的字符串,你需要一个额外的步骤:

text.decode("utf-8").encode("windows-1252").decode("utf-8")
Run Code Online (Sandbox Code Playgroud)

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

顺便说一下 - 要发现这样的文本是如何因编码问题而被破坏的,你可以使用chardet:

>>> import chardet
>>> chardet.detect(u"And the Hip’s coming, too")
{'confidence': 0.5, 'encoding': 'windows-1252'}
Run Code Online (Sandbox Code Playgroud)

  • 小警告:chardet 是 LGPL 许可的,所以如果它用于分发给最终用户的东西,这是一个考虑因素。 (3认同)

Mik*_*maa 11

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

由于您没有为您的问题提供任何上下文或代码,因此无法给出直接答案.

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

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

  • 是的,它的UTF-8被视为Windows 1252:'你'\ N {RIGHT SINGLE QUOTATION MARK}'.encode('utf-8').decode('cp1252')`. (3认同)