【发布时间】:2015-10-10 13:14:39
【问题描述】:
我正在尝试在 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
【问题讨论】:
-
错误信息告诉你你的终端编码是ascii,而
\u0243不能编码成ascii。也许将PYTHONIOENCODING环境变量设置为例如utf-8会有所帮助.. -
我在 KDE 中使用 Konsole,然后右键单击它,我可以看到在查看编码时选择了 UTF-8。这更像是一个 bash 问题吗? joelhy.github.io/img/konsole_select_encoding.jpg
-
对不起,我不知道..我在windows上,还有unicode和控制台从来都不是朋友..
-
感谢@thebjorn 的工作。我以为我有那个设置,但将 envvar 误读为 PYTHONENCODING 而不是 PYTHONIOENCODING。
-
它也可以通过在变量末尾添加 bitcoin= u'u\0243'.encoding('utf-8') 来工作。