Pourquoi cette erreur survient-elle lorsque j'essaie d'imprimer quelque chose dans Putty?

StackOverflow https://stackoverflow.com/questions/1643023

Question

UnicodeEncodeError: 'ascii' codec can't encode character u'\u2019' in position 38: ordinal not in range(128)

Je télécharge un site Web et en imprime ensuite le contenu ... simple. Dois-je l'encoder d'une manière ou d'une autre?

Était-ce utile?

La solution

Essayez utf-8 pour commencer. Le site Web que vous téléchargez peut avoir un jeu de caractères différent de celui de ANSI et ces caractères supplémentaires ne peuvent pas être imprimés sur la console.

Donc là où vous faites texte d'impression , faites texte.encode ('utf-8') à la place.

Autres conseils

Assurez-vous que Putty est configuré pour accepter les données codées UTF-8.

imprimer sur une sortie standard peut poser problème, car Python ignore souvent le codage de caractères utilisé par le système. Face à cela, Python 2 assume le choix le plus conservateur, US ASCII. Ainsi, lorsque vous essayez d’imprimer une chaîne contenant des caractères non ASCII, tels que la citation intelligente U + 2019 , cette erreur s’affiche.

Dans Python 3, le jeu de caractères par défaut pour sys.stdout.encoding est UTF-8. Si vous êtes sûr que votre sortie standard (c'est-à-dire PuTTY dans votre cas) doit accepter UTF-8, alors vous pouvez l'encoder explicitement:

print content.encode('UTF-8')
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top