нет UnicodeError при использовании печати с кодировкой по умолчанию, установленной в ASCII - PullRequest
5 голосов
/ 29 июля 2011

После прочтения: Погружение в Python: обсуждение Unicode

Мне стало любопытно попробовать напечатать мое имя в indic script. Я использую v2.7.2 -

>>> import sys
>>> sys.getdefaultencoding()
'ascii'
>>> name = u'\u0935\u0948\u092D\u0935'
>>> print name
वैभव

Я ожидал, что print name даст мне UnicodeError, поскольку для defaultencoding установлено значение ASCII, поэтому автоматическое приведение к ASCII из Unicode не должно работать.

Чего мне не хватает?

1 Ответ

9 голосов
/ 29 июля 2011

печать использует sys.stdout.encoding , а не sys.getdefaultencoding():

Когда Python находит свой вывод подключенным к терминалу, он устанавливает Атрибут sys.stdout.encoding для кодировки терминала. Печать Обработчик оператора будет автоматически кодировать аргументы Юникода в стр. выход.

>>> import sys
>>> print(sys.stdout.encoding)
utf-8
>>> print(sys.getdefaultencoding())
ascii
>>> name = u'\u0935\u0948\u092D\u0935'
>>> print name
वैभव
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...