Печать символов unicode в stdout в python печатает неправильные символы

Я хочу напечатать набор символов Unicode для моего терминала командной строки. Даже когда я применяю кодировку как «UTF-8», терминал печатает какой-то мусор.

$python -c "import sys; print sys.stdout.write(u'\u2044'.encode('UTF-8'))" ΓüäNone $python -c "import sys; print sys.stdout.encoding" cp437 

Моя кодировка по умолчанию – cp437, и я пытаюсь ее переопределить. Ожидаемый результат здесь – косая черта (/)

http://www.fileformat.info/info/unicode/char/2044/index.htm

Тот же фрагмент кода работает безупречно в моем терминале Mac и использует UTF-8 в качестве кодировки по умолчанию. Есть ли способ показать это и в Windows? Шрифт, который я использую в командной строке Windows, является consolas.

Я хочу, чтобы мой код работал с любыми символами Юникода, а не только с этим конкретным примером, поскольку вход является результатом веб-запроса, и я не контролирую его.

2 Solutions collect form web for “Печать символов unicode в stdout в python печатает неправильные символы”

Вы должны использовать кодовую страницу UTF-8 (cp65001), чтобы ожидать, что текст с кодировкой UTF-8 будет отображаться.

Python 3.3 заявляет о поддержке кодовой страницы 65001 (UTF-8) в Windows.

 C:\>chcp 65001 Active code page: 65001 C:\>python Python 3.3.0rc1 (v3.3.0rc1:8bb5c7bc46ba, Aug 25 2012, 13:50:30) [MSC v.1600 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> print('\u2044') ⁄ 

Хотя это багги:

 >>> print('\u2044') ⁄ >>> print('\u2044'*8) ⁄⁄⁄⁄⁄⁄⁄⁄   ⁄⁄⁄⁄ ⁄⁄    >>> print('1\u20442 2\u20443 4\u20445') 1⁄2 2⁄3 4⁄5 ⁄5  >>> print('\u2044') ⁄ >>> print('\u2044'*8) ⁄⁄⁄⁄⁄⁄⁄⁄   ⁄⁄⁄⁄ ⁄⁄    >>> print('1\u20442 2\u20443 4\u20445') 1⁄2 2⁄3 4⁄5 ⁄5 

Python не может управлять кодировкой, используемой вашим терминалом; вам придется изменить это где-то еще.

Другими словами, только потому, что вы вынуждаете python выводить текст в кодировке UTF-8 на терминал, не означает, что ваш терминал волшебным образом начнет принимать этот вывод как UTF-8.

Терминал Mac OS X уже настроен для работы с UTF-8.

В Windows вы можете переключить кодовую страницу консоли с chcp команды chcp :

 chcp 65001 

где 65001 – кодовая страница Windows для UTF-8. См. Символы Unicode в командной строке Windows – как?

  • Celery + Django: не удается запустить celerybeat в Windows 7
  • Разработка OpenOffice.org с pyUno ​​для Windows - какой Python?
  • Смешивание read () и write () в файлах Python в Windows
  • Установка Theano на EPD (Windows x64)
  • Как установить OpenCV на Windows и включить его для PyCharm без использования диспетчера пакетов
  • Рекомендуемая библиотека / инфраструктура python для локального веб-приложения?
  • Как использовать цвет в командной строке Windows с помощью Python?
  • Детерминированный скрипт python ведет себя недетерминированным образом
  • Python - лучший язык программирования в мире.