Perché visualizzo questo errore quando provo a stampare qualcosa in Putty?
Domanda
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2019' in position 38: ordinal not in range(128)
Sto scaricando un sito Web e quindi stampando il suo contenuto ... semplice. Devo codificarlo in qualche modo?
Soluzione
Prova utf-8 per iniziare. Il sito Web scaricato potrebbe avere un set di caratteri diverso da ANSI e quei caratteri extra non possono essere stampati sulla console.
Quindi nel posto in cui si fa stampa testo
si fa invece print text.encode ('utf-8')
.
Altri suggerimenti
Assicurati di avere Putty configurato per accettare i dati codificati UTF-8.
print
ing roba sull'output standard può essere problematico, perché Python spesso non sa quale carattere sta codificando il sistema. Di fronte a questo Python 2 assume la scelta più conservativa, US ASCII. Quindi quando provi a stampare una stringa che contiene caratteri che non sono in ASCII, come la virgoletta intelligente U + 2019 ’
, ti dà questo errore.
In Python 3 l'ipotesi del set di caratteri predefinito per sys.stdout.encoding
è UTF-8. Se sei sicuro che il tuo output standard (es. PuTTY nel tuo caso) dovrebbe accettare UTF-8, allora sì puoi codificarlo esplicitamente:
print content.encode('UTF-8')