2012-04-25 21 views
9

Estoy tratando de imprimir una cadena desde archived web crawl, pero cuando lo hago obtengo este error :UnicodeEncodeError: el códec 'ascii' no puede codificar el carácter u ' xe7' en la posición 17710: ordinal no está dentro del rango (128)

print page['html'] 
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe7' in position 17710: ordinal not in range(128) 

Cuando intento imprimir unicode(page['html']) me sale:

print unicode(page['html'],errors='ignore') 
TypeError: decoding Unicode is not supported 

Cualquier idea de cómo puedo codificar correctamente esta cadena, o al menos conseguir que imprimir? Gracias.

+4

http://farmdev.com/talks/unicode/ –

+2

Esta es, con mucho, la pregunta más común de Python. – KurzedMetal

Respuesta

20

Necesitas codificación Unicode guardó para mostrarlo, no decodificación que - Unicode es la forma no codificada. Siempre debe especificar una codificación, para que su código sea portátil. La selección "habitual" es utf-8:

print page['html'].encode('utf-8') 

Si no se especifica una codificación, si funciona o no, dependerá de lo que está print ing a - su editor, sistema operativo, programa de terminal, etc.

+2

+1 para la "selección habitual". http://www.utf8everywhere.org –

Cuestiones relacionadas