Ситуация: есть консольное приложение на Python (версия 2.7). В ходе работы приложение должно выводить (считывать не нужно, уж не знаю, важно ли это) данные в консоль, в том числе текст на русском языке. Проблема
def __str__(self):
return "%s |(%s)|" % (self.name, self.id)
вот self.name — строка, в которой могут быть русские символы.
Без каких либо преобразований вообще — вылетает ошибка:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-4: ordinal not in range(128)
Если же заменить код на:
def __str__(self):
return "%s |(%s)|" % (repr(self.name.encode("UTF-8")), self.id)
то исключение не вылетает, но на консоль выводятся не кириллические символы, а их байтовая репрезентация.
Пример:
'\xd0\x95\xd0\xbb\xd0\xb5\xd0\xbd\xd0\xb0 S.' |(157927927)|
Вместо:
Елена S.
Как решать такую проблему? С латиницей проблем нет, тот же код выводит не байтовую репрезентацию, а нормальные латинские символы символы.
Что кстати можно почитать по этому поводу?