我尝试使用 feed 解析器读取 RSS-feed。
import feedparser
url = 'http://example.com/news.xml'
d=feedparser.parse(url)
f = open('rss.dat','w')
for e in d.entries:
title = e.title
print >>f, address
f.close()
它适用于英语 RSS 源,但如果我尝试显示用西里尔字母书写的标题,我会收到 UnicodeEncodeError。当我执行以下操作时就会发生这种情况:
- 尝试将标题写入文件。
- 尝试在屏幕上显示标题。
- 尝试在 URL 中使用它来访问网页。
我的问题是如何轻松解决这个问题。我希望有一个像这样简单的解决方案:
new_title = some_function(title)
也许有办法用 HTML 代码替换每个西里尔字母符号?
最佳答案
FeedParser 本身可以很好地处理编码,除非声明错误。引用http://code.google.com/p/feedparser/issues/detail?id=114以获得可能的解释。 Python 2.5 似乎使用 ascii 作为默认编码,并导致问题。 您可以粘贴实际的 feed URL,看看那里是如何声明编码的吗?如果声明编码错误 - 您必须找到一种方法来指示 FeedParser 覆盖默认值。
编辑:好的,看来错误出在 print 语句中。 使用
f.write(title.encode('utf-8'))
关于python - 如何在使用西里尔文(俄语)字母时解决 UnicodeEncodeError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10979140/