所以简而言之,我的情况是:
当然,内容不是简单的ascii,它是utf-8,所以我得到像“öäå”这样的字符。但是当我打印文本时,它们都会被'\ xe4'这样的ecapes所破坏。与编码有关但我无法理解这一点。这应该是如此微不足道,但google fu让我失望。
一个例子是当我逐字逐句浏览内容并试图找到字符“ö”时:我这样做:
if u"ö" in word:
其中只提供:UnicodeDecodeError:'ascii'编解码器无法解码位置6中的字节0xc3 ...
编辑:
所以我觉得我发现了自己的问题。我正在获取feed项,然后只执行str(entry.content)并传递它,但是entry.content是一个列表,其中包含一个带有unicode字符串作为值的字典,所以我所做的(我猜)只是得到一个ascii字典内容的表示......
答案 0 :(得分:2)
您正在尝试将编码文本与unicode进行比较。 Python不知道编码文本是UTF-8,因此它猜测它是ASCII并尝试将其解码为unicode。解决方案是使用正确的编码明确解码它。
查看Python Unicode HOWTO了解详情。
我可以使用此文件重现您的问题:
# coding: utf-8
word = "öäå"
if u"ö" in word:
print True
并使用此文件修复它:
# coding: utf-8
word = "öäå".decode('utf-8')
if u"ö" in word:
print True
答案 1 :(得分:0)
如果您知道文本是UTF-8,则可以在开始使用它们之前将其解码为unicode
个对象。只要从文件中读取字节,就可以使用decode()
字符串方法将它们解码为word.decode('UTF8')
,以返回unicode对象。
答案 2 :(得分:0)
尝试使用feedparser包http://packages.python.org/feedparser/ 它很好地处理编码并支持几乎所有的feed格式。您将获得结构良好的数据。