Python, sauf pour UnicodeError?
Dans mon code, je reçois cette erreur...
UnicodeEncodeError: 'charmap' codec can't encode character '\u2013' in position 390: character maps to <undefined>
J'ai essayé de mettre une exception pour UnicodeError et UnicodeEncodeError mais rien ne fonctionne, le problème c'est que c'est les utilisateurs d'entrée de sorte que je ne contrôle pas ce qu'ils mettent donc j'ai besoin de tout coder les erreurs à afficher une impression qui dit erreur, au lieu de planter le programme...
try:
argslistcheck = argslist[0]
if argslistcheck[0:7] != "http://":
argslist[0] = "http://" + argslist[0]
with urllib.request.urlopen(argslist[0]) as url:
source = url.read()
source = str(source, "utf8")
except urllib.error.URLError:
print("Couln't connect")
source = ""
except UnicodeEncodeError:
print("There was an error encrypting...")
source = ""
Traceback:
Traceback (most recent call last):
..... things leading up to error
File "C:\path", line 99, in grab print(source)
File "C:\Python33\lib\encodings\cp437.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_map)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\u2013' in position 390: character maps to <undefined>
Il est plus probable que c'est le sortie de votre programme qui est à l'origine de l'erreur; les données Unicode est automatiquement codé pour correspondre à votre terminal d'encodage de sortie. Êtes-vous l'impression tout ou en écriture à un fichier? Veuillez inclure le code et le plein de sperme.
Oui, il imprime la source ou de l'enregistrer dans un fichier txt... Il ne le sur certains sites, comme si je le fais sur mon site, alors il l'habitude, mais si je le fais avec test.com alors qu'il le ferait. Je ne veux juste pas le programme s'écraser.
Regardez de près le traceback (de préférence le partager avec nous). Il vous dit opération est un échec.
Oui, il imprime la source ou de l'enregistrer dans un fichier txt... Il ne le sur certains sites, comme si je le fais sur mon site, alors il l'habitude, mais si je le fais avec test.com alors qu'il le ferait. Je ne veux juste pas le programme s'écraser.
Regardez de près le traceback (de préférence le partager avec nous). Il vous dit opération est un échec.
OriginalL'auteur TrevorPeyton | 2013-02-24
Vous devez vous connecter pour publier un commentaire.
Donner à ceci un essai:
source = str(source, encoding='utf-8', errors = 'ignore')
ou de prendre un coup d'oeil à ce post est question.
Cool, heureux de vous aider.
OriginalL'auteur chirinosky
Votre impression est un échec. Votre console Windows ne prend pas en charge l'impression de l'UTF-8, vous avez besoin de changer la page de codes:
C'est un de commande de Windows, pas une commande python. Vous pouvez avoir besoin de changer les polices trop, Lucida Sans Console est une police de caractères Unicode qui peut gérer beaucoup plus de glyphes.
Le problème, c'est votre entrée contenant codepoints pour lesquelles votre page de codes par défaut (437) n'est pas n'importe quel encodage. 65001 est la MME page de codes pour l'UTF-8, qui coder tous les caractères Unicode.
Ok, donc comment puis-je changer la page de codes?
Merci je l'ai eu à partir de Ramces lien qu'il m'a donné.
OriginalL'auteur Martijn Pieters
essayer celui-ci pour remplacer str():
source = source.encode('UTF-8')
OriginalL'auteur wendong