2
我有一個Python代碼,它嘗試讀取用西裏爾字母(例如俄語)書寫的RSS源。這是我使用的代碼:爲什麼編碼不總是工作?
import feedparser
from urllib2 import Request, urlopen
d=feedparser.parse(source_url)
# Make a loop over the entries of the RSS feed.
for e in d.entries:
# Get the title of the news.
title = e.title
title = title.replace(' ','%20')
title = title.encode('utf-8')
# Get the URL of the entry.
url = e.link
url = url.encode('utf-8')
# Make the request.
address = 'http://example.org/save_link.php?title=' + title + '&source=' + source_name + '&url=' + url
# Submit the link.
req = Request(address)
f = urlopen(req)
我用encode('utf-8')
由於標題在西裏爾字母給出,它工作正常。 RSS源的一個例子是here。當我嘗試從另一個URL讀取RSS源的列表時出現問題。更詳細地說,有一個網頁,其中包含RSS源的列表(源的URL以及用西里爾文字母給出的名稱)。列表中的一個例子是在這裏:當我嘗試申請編碼(「UTF-8」),該文件中給出的西裏爾字母出現
<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN' 'http://www.w3.org/TR/html4/loose.dtd'>
<html>
<head>
<title></title>
<meta http-equiv='Content-Type' content='text/html;charset=utf-8'>
ua, Корреспондент, http://k.img.com.ua/rss/ua/news.xml
ua, Українська Правда, http://www.pravda.com.ua/rss/
</body>
</html>
的問題。我得到一個UnicodeDecodeError
。有人知道爲什麼嗎?
是的,Python 2很有趣。 – 2012-07-11 10:05:50
但是爲什麼'encode'與RSS源的西里爾文標題一起使用,並且它不能與RSS源列表中給出的源的西里爾文名稱一起使用? – Roman 2012-07-11 10:09:22
@Roman可能是因爲你沒有解碼列表中的名字。 – ecatmur 2012-07-11 10:16:52