Почему я получаю эту ошибку, когда пытаюсь что-то напечатать в Putty? - PullRequest
2 голосов
/ 29 октября 2009
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2019' in position 38: ordinal not in range(128)

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

Ответы [ 3 ]

2 голосов
/ 29 октября 2009

Попробуйте utf-8 для запуска. Загружаемый веб-сайт может иметь другую кодировку, чем ANSI, и эти дополнительные символы не могут быть напечатаны на консоли.

То есть на месте, где вы вместо этого print text делаете print text.encode('utf-8').

0 голосов
/ 29 октября 2009

print Загрузка материала в стандартный вывод может быть проблематичной, поскольку Python часто не знает, какую кодировку символов использует система. На первый взгляд этот Python 2 предполагает наиболее консервативный выбор, ASCII США. Поэтому, когда вы пытаетесь напечатать строку, содержащую символы, которых нет в ASCII, например, умную цитату U + 2019 , выдается эта ошибка.

В Python 3 стандартное предположение кодировки для sys.stdout.encoding - UTF-8. Если вы уверены, что ваш стандартный вывод (т. Е. PuTTY в вашем случае) должен принимать UTF-8, то да, вы можете явно его кодировать:

print content.encode('UTF-8')
0 голосов
/ 29 октября 2009

Убедитесь, что Putty настроен на прием данных в кодировке UTF-8.

...