如何使用西里尔文(俄语)字母解决UnicodeEncodeError?

时间:2012-06-11 11:24:11

标签: python unicode encode non-unicode

我尝试使用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-feeds,但如果我尝试显示用西里尔字母书写的标题,我会收到UnicodeEncodeError。它发生在我:

  1. 尝试将标题写入文件。
  2. 尝试在屏幕上显示标题。
  3. 尝试在URL中使用它来访问网页。
  4. 我的问题是如何轻松解决这个问题。我希望有一个简单的解决方案:

    new_title = some_function(title)
    

    可能有办法用HTML代码替换每个Cyrillic符号吗?

1 个答案:

答案 0 :(得分:3)

FeedParser本身可以正常编码,除非它被错误地声明。有关可能的解释,请参阅http://code.google.com/p/feedparser/issues/detail?id=114。似乎Python 2.5使用ascii作为默认编码,并导致问题。 您可以粘贴实际的Feed网址,以查看在那里声明编码的方式。如果声明编码似乎错误 - 您必须找到一种方法来指示FeedParser覆盖默认值。

编辑:好的,似乎错误出现在print语句中。 使用

f.write(title.encode('utf-8'))