作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 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 以及它们以西里尔字母给出的名称)。列表示例如下:
<!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>
当我尝试将 encode('utf-8') 应用于本文档中给出的西里尔字母时出现问题。我得到一个 UnicodeDecodeError
。有人知道为什么吗?
最佳答案
encode
只会在您提供一个 str
对象然后尝试解码为 unicode
时给出 UnicodeDecodeError
>;见http://wiki.python.org/moin/UnicodeDecodeError .
首先需要将str
对象解码为unicode
:
name = name.decode('utf-8')
这将采用 UTF-8 编码的 str
并为您提供 unicode
对象。
它适用于您发布的代码,因为 feedparser
返回已解码为 unicode
的提要数据。
关于python - 为什么编码并不总是有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11430021/
我是一名优秀的程序员,十分优秀!