2012-04-25 9 views
9

Sto provando a stampare una stringa da uno archived web crawl, ma quando lo faccio ottengo questo errore :UnicodeEncodeError: il codec 'ascii' non può codificare il carattere u ' xe7' nella posizione 17710: ordinale non compreso nell'intervallo (128)

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

Quando provo stampa unicode(page['html']) ottengo:

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

Qualsiasi idea di come posso codice correttamente questa stringa, o almeno farlo per stampare? Grazie.

+4

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

+2

Questa è di gran lunga la domanda pitone più comune. – KurzedMetal

risposta

20

È necessario codificare l'unicode è stato salvato per visualizzarlo, non decodifica esso - unicode è la forma non codificata. Devi sempre specificare una codifica, in modo che il tuo codice sia portatile. Il "solito" prelievo è utf-8:

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

Se non si specifica una codifica, se sia o non funziona dipenderà da quello che si è print ing a - il vostro editor, OS, programma terminale, ecc

+2

+1 per la "scelta usuale". http://www.utf8everywhere.org –

Problemi correlati