【问题标题】:Decoding UTF-8 strings in Python在 Python 中解码 UTF-8 字符串
【发布时间】:2012-10-18 02:50:16
【问题描述】:

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

头条新闻应该是这样的:Hip 也来了

但它却说:Hip 也来了

这里出了什么问题?

【问题讨论】:

  • 如果您包含相关代码以及您正在解析的特定网站,会更容易为您提供帮助。

标签: python python-2.7


【解决方案1】:

这是一个编码错误 - 所以如果它是一个 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'}

【讨论】:

  • 小警告:chardet 已获得 LGPL 许可,因此如果将其用于分发给最终用户的内容中,这是一个考虑因素。
【解决方案2】:

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

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

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

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

【讨论】:

  • 是的,它是像 Windows 1252 一样处理的 UTF-8:u'\N{RIGHT SINGLE QUOTATION MARK}'.encode('utf-8').decode('cp1252')。
猜你喜欢
  • 1970-01-01
  • 2022-11-12
  • 1970-01-01
  • 1970-01-01
  • 2018-06-29
  • 2015-05-09
  • 2020-04-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多