Почему я получаю эту ошибку, когда пытаюсь что-то напечатать в Putty?

StackOverflow https://stackoverflow.com/questions/1643023

Вопрос

UnicodeEncodeError: 'ascii' codec can't encode character u'\u2019' in position 38: ordinal not in range(128)

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

Это было полезно?

Решение

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

Поэтому там, где вы печатаете текст , вместо этого печатаете text.encode ('utf-8') .

Другие советы

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

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

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

print content.encode('UTF-8')
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top