Python « lower() для кириллицы

Требуется сделать lower() для кириллицы. Гугл сказал следующее:


print unicode('Трололо', 'utf-8').upper().encode('utf-8')


У меня питон ругается на это UnicodeDecodeError: 'utf8' codec can't decode bytes in position 0-1: invalid data


В самом скрипте # -*- coding: utf-8 -*-


Как пофиксить, подскажите?

1 ответов



# -*- coding: utf-8 -*-
print u"Трололо".lower()
 

Кодируйте (encode()) юникодные строки в utf-8 если хотите сохранить их в файле. Декодируйте при чтении из файла. Внутри программы, соответственно, для представления строк используйте unicode-объекты.

Справедливо для 2.x.

Можно еще # -*- coding: cp1251 -*- если под виндой
Это тебе на конкурс Code Golf?