2015-12-23 4 views
1

Я пытаюсь напечатать простой календарь из питона calendar модуля:ошибка Unicode календарь Python3 модуль

import calendar 

c = calendar.LocaleTextCalendar(0, 'Russian') 
s = c.formatmonth(2016, 5) 
print(s) 

В Linux это работает хорошо, но на Windows я получил ошибку: UnicodeEncodeError: 'charmap' codec can't encode characters in position 4-10: character maps to <undefined>

All Я могу сделать, чтобы избежать ошибки print(s.encode('ascii', 'replace').decode('ascii')) (с пропущенными языковыми значениями текста), поэтому меня интересует общее приятное решение.

Заранее спасибо.

ответ

1

Я решил проблему следующим образом:

import platform 

if platform.system() == 'Windows': 
    import locale 
    locale.setlocale(locale.LC_ALL, "Russian") 

... 
print(s) # Works! 

Другой вариант кодирования/декодирования в печати:

print(s.encode('cp1252').decode('cp1251')) 

В обоих случаях работает для вывода файла тоже.

1

Это происходит из-за того, что кодировка окон не является Unicode. К сожалению, это не тривиально, и есть несколько способов обойти это.

Какова кодировка вашей консоли? Вы можете узнать в Python так

import sys 
sys.stdin.encoding 

вы можете попытаться установить Юникод этот путь только для текущей консоли:

chcp 65001 
python myScript.py 

В вашем сценарии убедитесь, что ваша строка кодируется в UTF-8 ,

+0

Кодирование 'cp866' – Keeper

+0

Вы пытались выполнить приведенную выше команду и запустить свой скрипт? –

+0

Ошибка исчезла, но символы не читаются. – Keeper

Смежные вопросы