¿Por qué aparece este error cuando intento imprimir algo en Putty?
Pregunta
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2019' in position 38: ordinal not in range(128)
Estoy descargando un sitio web y luego imprimiendo su contenido ... simple. ¿Tengo que codificarlo de alguna manera?
Solución
Pruebe utf-8 para comenzar. El sitio web que descargue puede tener un juego de caracteres diferente al ANSI y esos caracteres adicionales no se pueden imprimir en la consola.
Entonces, en el lugar donde haces print text
haz print text.encode ('utf-8')
en su lugar.
Otros consejos
Asegúrese de tener Putty configurado para aceptar datos codificados UTF-8.
print
el material de salida estándar puede ser problemático, porque Python a menudo no sabe qué codificación de caracteres está usando el sistema. Frente a esto, Python 2 asume la opción más conservadora, ASCII de EE. UU. Entonces, cuando intenta imprimir una cadena que contiene caracteres que no están en ASCII, como la cita inteligente U + 2019 & # 8217;
, le da este error.
En Python 3, el conjunto de caracteres predeterminado para sys.stdout.encoding
es UTF-8. Si está seguro de que su salida estándar (es decir, PuTTY en su caso) debe aceptar UTF-8, entonces sí, puede codificarla explícitamente:
print content.encode('UTF-8')