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

标签 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 源,但如果我尝试显示用西里尔字母书写的标题,我会收到 UnicodeEncodeError。当我执行以下操作时就会发生这种情况:

  1. 尝试将标题写入文件。
  2. 尝试在屏幕上显示标题。
  3. 尝试在 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/

相关文章:

python - 如何抓取 URL 中包含页码的多个页面

python - 如何在我的网站空间上使用 python 执行 JSONP?

c++ - sdl unicode 文本

数字上方的 CSS 点

java - 将字符串转换为私钥和公钥 (RSA)

python Pandas : fluent setter for DataFrame index?

Python 解析 HTML 时的 Unicode 和 ASCII 问题

python - 从十六进制字符串转换为 unicode

file - Golang 与 ffmpeg 动态视频编码

python - Django:将来自管理员的新行存储在数据库中并通过 REST API 返回它们