使用默认编码设置为ASCII的打印时没有UnicodeError

时间:2011-07-29 17:38:14

标签: python unicode

阅读后:Dive into Python: Unicode Discussion

我很想知道在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}}不应该工作。

我错过了什么?

1 个答案:

答案 0 :(得分:9)

print uses sys.stdout.encoding,而不是sys.getdefaultencoding()

  

当Python找到附加到终端的输出时,它会设置   sys.stdout.encoding属性到终端的编码。印刷品   statement的处理程序将自动将unicode参数编码为   str输出。

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