Пытаюсь парсить страницу, на которой была вроде как cp1251:
page = urllib2.urlopen(self.source)
text = page.read().decode('cp1251').encode('utf-8')
#text = unicode(page.read(), 'cp1251', 'ignore')
output = cStringIO.StringIO(text)
print text
tree = html.parse(output)
root = tree.getroot()
news = root.cssselect('.news')[0]
self.text = news.cssselect('h3')[0].text
print self.text
В качестве парсера, как видно, lxml, из одной кодировки в другую как только не переводил. При простом парсинге без преобразования получается Îñíîâàòåëÿìè , причем это именно юникодные символы и они не преобразуются в cp1251, так как получается что-то в духе ГЋГ±Гîâà òåëÿìè ðèýГ. Если же перекодировать - либо выдает ошибку перекодирования, либо кодировка падает после использования lxml, так как в text текст нормальный, юникодный, а после выборки по селектору в self.text опять находятся кракозябры. Юникодные. Что за ерунда, это lxml так шутит?