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?

È stato utile?

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')
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top