我试图在Python 2中打印Unicode比特币符号\u2043
。我尝试添加#-*- coding: utf-8 -*-
。
$ python2 -c 'print u'\u0243''
提高
UnicodeEncodeError: 'ascii' codec can't encode character u'\u0243' in position 0: ordinal not in range(128)
。但是,可以从Python Shell进行此操作。$ python2
>>> print u'\u0243'
Ƀ
为什么此代码不起作用?
bitcoin = u'\u0243'
quote = u'{:,.2f}'.format(float(val), '.2f')
print bitcoin, quote
最佳答案
在Unix上,如果sys.stdout.isatty()
返回True
但sys.stdout.encoding
是'ANSI_X3.4-1968'
(ascii),则应将区域设置(检查LANG
,LC_CTYPE
,LC_ALL
envvars)配置为使用非ascii编码,如果您需要打印非ASCII字符。
如果sys.stdout.isatty()
为false,则在脚本之外配置PYTHONIOENCODING
envvar。
始终打印Unicode,不要在脚本中硬编码环境的字符编码。