2012-06-11 41 views
2

我嘗試使用Feed解析器讀取RSS源。如何使用西里爾文(俄文)字母時解決UnicodeEncodeError問題?

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如果我嘗試顯示寫在西裏爾字母的標題。當我發生時:

  1. 嘗試將標題寫入文件。
  2. 嘗試在屏幕上顯示標題。
  3. 嘗試在URL中使用它來訪問網頁。

我的問題是如何輕鬆解決這個問題。我很想有一個像這樣簡單的解決方案:

new_title = some_function(title) 

可能有一種方法可以用其HTML代碼替換每個西里爾文符號嗎?

回答

3

FeedParser本身在編碼方面工作正常,除非在錯誤聲明的情況下。有關可能的解釋,請參閱http://code.google.com/p/feedparser/issues/detail?id=114。看來Python 2.5使用ascii作爲默認編碼,並導致問題。 您可以粘貼實際的供稿網址,查看如何在此處聲明編碼。如果出現聲明編碼錯誤 - 您必須找到一種方法來指示FeedParser覆蓋默認值。

編輯:好的,它似乎錯誤是在打印聲明。 使用

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

更新了文本,在打印之前調用了值的編碼。 – Tisho

+0

謝謝。它解決了問題! – Roman

相關問題