我试图在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()返回Truesys.stdout.encoding'ANSI_X3.4-1968'(ascii),则应将区域设置(检查LANGLC_CTYPELC_ALL envvars)配置为使用非ascii编码,如果您需要打印非ASCII字符。

如果sys.stdout.isatty()为false,则在脚本之外配置PYTHONIOENCODING envvar。
始终打印Unicode,不要在脚本中硬编码环境的字符编码。

08-25 06:49