Форум сайта python.su
Привет, форум!
Столкнулся с проблемкой в консольных приложениях и скриптах на python.
Бывает, что в распарсенном тексте обнаруживаются украинские слова, которые содержа в себе u'\u0456' - то есть, буква i.
Изначально, текст в utf-8, но при декодировании в юникод и попытке последующего вывода print'ом в консоль - вываливается ошибка:
Traceback (most recent call last):
File "ring.py", line 3, in <module>
print s.decode("utf-8")
File "C:\Python27\lib\encodings\cp866.py", line 12, in encode
return codecs.charmap_encode(input,errors,encoding_map)
UnicodeEncodeError: 'charmap' codec can't encode character u'\u0456' in position 1: character maps to <undefined>
Офлайн
print s.decode("utf-8").encode("cp866", "ignore")
print s.decode("utf-8").replace(u'\u0456', u'i')
Офлайн
NikВот это подходит, но иногда я пользую то консоль, то шелл, то вообще шелл в Aptana.print s.decode("utf-8").encode("cp866", "ignore")
Nikну это ни в какие ворота =)print s.decode("utf-8").replace(u'\u0456', u'i')
Офлайн
ChriztКодировка терминала доступна через атрибут encoding объекта stdout.
но иногда я пользую то консоль, то шелл, то вообще шелл в Aptana.
>>> import sys
>>> sys.stdout.encoding
Офлайн
NikДа эт я в курсе, спасибо =))ChriztКодировка терминала доступна через атрибут encoding объекта stdout.
но иногда я пользую то консоль, то шелл, то вообще шелл в Aptana.Укажите атрибут вместо кодировки cp866 и будет вам счастье. :)>>> import sys
>>> sys.stdout.encoding
Офлайн