У меня возникают проблемы при попытке печати символов, таких как €, ≤, & # x212b ;, Ω, ℃ и т.д., в Python 2.7.11 под для Windows 10. Я ожидал, что работает этот кусок кода из IDLE:Как печатать строки Unicode в оболочке Python 2 под Windows?
print u'\u20AC\u2A7D\u212B\u2126\u2103'
будет производить следующий вывод на экран:
>>> ================================ RESTART ================================
>>>
€⩽ÅΩ℃
>>>
Но это не так. Вместо этого я получил фанк-строку из символов, отличных от ascii. После борьбы за какое-то время, я, наконец, получил ожидаемый результат, установив переменную окружения:
PYTHONIOENCODING=UTF-8
До сих пор, так хорошо. Моя проблема заключается в том, что я не могу получить тот же результат с Python оболочки:
>>> print u'\u20AC\u2A7D\u212B\u2126\u2103'
Ôé¼Ô®¢Ôä½ÔäªÔäâ
>>>
Я безуспешно пытался несколько обходных путей, я нашел в ответах на подобные вопросы:
Изменено код страницы от 850 (который по умолчанию в моей системе) к (что соответствует UTF-8 enconding)
обернутый sys.stdout обеспечить соответствующую кодировку
sys.stdout = codecs.getwriter('utf8')(sys.stdout)
Даже изменилась - хотя он широко рекомендуется - кодировку по умолчанию
sys.setdefaultencoding("UTF-8")
Ни одно из вышеперечисленного не работал для меня.
Мой вопрос имеет два аспекта:
- Почему если я бегу
print u'\u20AC\u2A7D\u212B\u2126\u2103'
от IDLE выход€⩽ÅΩ℃
(как и ожидалось), а если я запускаю этот код с Python оболочки вывод неверен? - У кого-нибудь есть советы для правильной печати этих символов из оболочки?