Я запускаю python 2.7.12 из anaconda на windows 10. В дистрибутив входит ipython 5.1.0. Я написал программу для печати определенных столбцов запрашиваемых строк в базе данных mysql. Столбцы содержат строки в юникоде. Когда программа запускается в python, возникает исключение, когда вначале отображается символ Юникода в одной из строк. Эта же программа в ipython работает, отображая все символы соответствующим образом.python и ipython по-видимому обрабатывают символы unicode по-разному
Я дистиллированный вопрос в отдельную маленькую программу выглядит следующим образом:
name = u'O\u2019Connor'
try:
print name
except:
print "exception 1 thrown"
try:
print u"{}".format(name)
except:
print "exception 2 thrown"
try:
print u"%s" % name
except:
print 'exception 3 thrown'
При запуске с помощью питона, исключения выбрасываются каждый раз. При запуске в ipython работают все три оператора печати. Очевидно, что существует разница между двумя версиями в способе обработки unicode. В чем разница и что мне делать, чтобы моя программа работала в любой среде?
Зачем? – Ouroborus
Сгенерированный запущенный python: Файл «C: \ Anaconda2 \ lib \ encodings \ cp437.py», строка 12, в кодировке return codecs.charmap_encode (вход, ошибки, encoding_map) UnicodeEncodeError: кодек charmap не может кодировать символ u '\ u2019' в позиции 1: карты символов до –
sizzzzlerz
Проблема в том, что python пытается печатать с использованием кодека, который не может быть преобразован из юникода, в то время как ipython печатает unicode напрямую. – Ouroborus