Как решить UnicodeEncodeError при работе с кириллическими (русскими) буквами?

Я пытаюсь прочитать RSS-ленту с помощью анализатора каналов.

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-кодом?

1 ответ

Решение

Сам FeedParser отлично работает с кодировками, за исключением случая, когда он ошибочно объявлен. Обратитесь к http://code.google.com/p/feedparser/issues/detail?id=114 за возможным объяснением. Кажется, Python 2.5 использует ascii в качестве кодировки по умолчанию и вызывает проблемы. Можете ли вы вставить фактический URL фида, чтобы увидеть, как там объявлена ​​кодировка. Если окажется, что объявленная кодировка неверна - вам нужно найти способ, чтобы FeedParser переопределил значение по умолчанию.

РЕДАКТИРОВАТЬ: Хорошо, кажется, ошибка в операторе печати. использование

f.write(title.encode('utf-8'))
Другие вопросы по тегам