【问题标题】:Can't print Unicode Bitcoin symbol in Python 2无法在 Python 2 中打印 Unicode 比特币符号
【发布时间】: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') 来工作。

标签: python unicode


【解决方案1】:

在 Unix 上,如果 sys.stdout.isatty() 返回 Truesys.stdout.encoding'ANSI_X3.4-1968' (ascii),那么您应该配置您的语言环境(检查 LANGLC_CTYPELC_ALL envvars)以使用非如果您需要打印非 ascii 字符,则使用 ascii 编码。

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

【讨论】:

    猜你喜欢
    • 2022-01-25
    • 2017-10-05
    • 2019-04-26
    • 2015-11-16
    • 1970-01-01
    • 1970-01-01
    • 2017-02-16
    • 2022-08-18
    • 1970-01-01
    相关资源
    最近更新 更多