Как решить 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, если пытаюсь отобразить заголовок, написанный кириллическими буквами. Это происходит, когда я:
- Попробуйте написать заголовок в файл.
- Попробуйте отобразить заголовок на экране.
- Попробуйте использовать его в 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'))