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?

¿Fue útil?

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')
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top