Невозможно напечатать символ биткойна 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.