Найти - Пользователи
Полная версия: utf-8 -> unicode (русская кириллица + украинские i)
Начало » Python для новичков » utf-8 -> unicode (русская кириллица + украинские i)
1
Chrizt
Привет, форум!

Столкнулся с проблемкой в консольных приложениях и скриптах на 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>
Понятное дело, что я не знаю, как быть с этим. Кстати, .decode(“utf-8”, “replace”) и “ignore” не работают :(
ПОМОГИТЕ!!!
Nik
print s.decode("utf-8").encode("cp866", "ignore")
или производите замену
print s.decode("utf-8").replace(u'\u0456', u'i')
Chrizt
Nik
print s.decode("utf-8").encode("cp866", "ignore")
Вот это подходит, но иногда я пользую то консоль, то шелл, то вообще шелл в Aptana.
Спасибо!

ЗЫ.
Nik
print s.decode("utf-8").replace(u'\u0456', u'i')
ну это ни в какие ворота =)
Nik
Chrizt
но иногда я пользую то консоль, то шелл, то вообще шелл в Aptana.
Кодировка терминала доступна через атрибут encoding объекта stdout.
>>> import sys
>>> sys.stdout.encoding
Укажите атрибут вместо кодировки cp866 и будет вам счастье. :)
Chrizt
Nik
Chrizt
но иногда я пользую то консоль, то шелл, то вообще шелл в Aptana.
Кодировка терминала доступна через атрибут encoding объекта stdout.
>>> import sys
>>> sys.stdout.encoding
Укажите атрибут вместо кодировки cp866 и будет вам счастье. :)
Да эт я в курсе, спасибо =))
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB