Невозможно напечатать символ биткойна Unicode в Python 2
Я пытаюсь напечатать символ биткойна Unicode \u2043
в Python 2. Я попытался добавить #-*- 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.
$ python2
>>> print u'\u0243'
Ƀ
Почему этот код не работает?
bitcoin = u'\u0243'
quote = u'{:,.2f}'.format(float(val), '.2f')
print bitcoin, quote
Ответы
Ответ 1
В 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 вне вашего script.
Всегда печатайте Юникод, не кодируйте кодировку символов вашей среды внутри своего script.