Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Python: Веб-разработка и фреймворки > Очередная проблема с кодировкой


Автор: Nilm 11.2.2009, 13:43
Всем привет!
Столкнулся с неразрешимой для меня проблемой - сломал себе весь мозг, гугление тоже ничего не дало :(

Пишу fcgi скрит, который получает через нет xml документ (http://rumetrika.rambler.ru/xml/news.xml).
И через параметр запроса query - поисковый паттерн.

Код

query = cgi.parse_qs(environ.get('QUERY_STRING', '')).get('query', [''])[0] # Получили квери

...
Код

page = uid.read() # Считали этот xmlник

И дальше самое интересное - с помощью регэкспа пытаюсь по xmklнику искать паттерн:
Код

regexp = re.compile('.*?<title>.*?' + query + '.*?</title>', re.DOTALL|re.IGNORECASE|re.LOCALE)
for article in articles: # articles - список статей распарсенных из xmklника (то, что между тегами <item>)
    if regexp.match(article):
        re_article.append(article)


Теперь сабж:
Оно прекрасно работает для чисел и английских букв, но пасует перед русскими. Чего я только не пробовал. Кодировал и query и page в 'utf-8' (матюкается след образом: page = uid.read().decode('utf-8'): UnicodeDecodeError: 'utf8' codec can't decode bytes in position 87-88: invalid data
или page = uid.read().encode('utf-8'): UnicodeDecodeError: 'ascii' codec can't decode byte 0xcd in position 87: ordinal not in range(128)),
пытался приводить к 'windows-1251', который в xmlнике стоит как default.
Ничего не помогает :( Пожалуйста, спасите мой мозг!  smile 

ЗЫ С вероятностью 90% xml в windows-1251, а я ввожу в utf-8 (если квери декодировать в 1251 то получаю кракозябры - ак)

Автор: Nilm 11.2.2009, 18:56
Проблема таки решилась, тему можно удалить.

Автор: alex_smirnov 11.2.2009, 21:02
Интересно, в чем же была проблема?

Автор: pythonwin 12.2.2009, 14:41
Цитата(Nilm @  11.2.2009,  16:43 Найти цитируемый пост)
ЗЫ С вероятностью 90% xml в windows-1251, а я ввожу в utf-8 (если квери декодировать в 1251 то получаю кракозябры - ак)

думаю у тебя в кодировке iso-8859-1
питоновский пакет по распознованию кодировки http://chardet.feedparser.org/

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)