Я никогда полностью не обволакивал кодировку и декодирование unicode в другие форматы (utf-8, utf-16, ascii и т.д.), но я дошел до стены, что и запутывает, и расстраивает. То, что я пытаюсь сделать, это напечатать символы карты utf-8 (♠, ♥, ♦, ♣) из модуля python в консоль Windows. Консоль, которую я использую, - git bash, и я использую console2 в качестве интерфейсного. Я пробовал/читал несколько подходов ниже, и до сих пор ничего не работало. Дайте мне знать, возможно ли, что я делаю, и правильный способ сделать это.
- Убедитесь, что консоль может обрабатывать символы utf-8. Эти два теста заставляют меня поверить, что консоль не проблема.
-
Попытайтесь сделать то же самое из модуля python.
Когда я выполняю .py, это результат.print(u'♠') UnicodeEncodeError: 'charmap' codec can't encode character '\u2660' in position 0: character maps to <undefined>
-
Попытка кодирования ♠. Это дает мне обратно набор юникодов, закодированный в utf-8, но все равно не символ лопаты.
text = '♠' print(text.encode('utf-8')) b'\xe2\x99\xa0'
Мне кажется, что я пропускаю шаг или не понимаю весь процесс кодирования/декодирования. Я прочитал этот, этот и this. В последней из страниц предлагается обернуть sys.stdout в код, но эта статья говорит, что использование stdout не является необходимым и указывает на другую страницу с использованием модуля кодеков.
Я так смущен! Я чувствую, что документация по качеству мышления на эту тему трудно найти, и, надеюсь, кто-то может это прояснить. Любая помощь всегда приветствуется!
Остин