1131 votes

UnicodeDecodeError : le codec 'charmap' ne peut pas décoder l'octet X en position Y : le caractère correspond à<undefined>

J'essaie de faire en sorte qu'un programme Python 3 effectue des manipulations avec un fichier texte rempli d'informations. Cependant, en essayant de lire le fichier, j'obtiens l'erreur suivante :

  Traceback (most recent call last):  
     File "SCRIPT LOCATION", line NUMBER, in <module>  
     `text = file.read()`  
     File "C:\Python31\lib\encodings\cp1252.py", line 23, in decode  
     `return codecs.charmap_decode(input,self.errors,decoding_table)[0]`  
     UnicodeDecodeError: 'charmap' codec can't decode byte 0x90 in position 2907500: character maps to `<undefined>`  

1928voto

Lennart Regebro Points 52510

Le fichier en question n'utilise pas l'encodage CP1252 Il utilise un autre encodage. Lequel vous devez déterminer vous-même. Les plus courants sont Latin-1 et UTF-8 . Étant donné que 0x90 ne signifie rien dans Latin-1 , UTF-8 (où 0x90 est un octet de continuation) est plus probable.

Vous spécifiez l'encodage lorsque vous ouvrez le fichier :

 file = open(filename, encoding="utf8")

153voto

Declan Nnadozie Points 131

Si file = open(filename, encoding="utf-8") ne fonctionne pas, essayez file = open(filename, errors="ignore") , si vous souhaitez supprimer les caractères inutiles. ( docs )

90voto

Kyle Parisi Points 146

Sinon, si vous n'avez pas besoin de décoder le fichier, comme le téléchargement du fichier sur un site Web, open(filename, 'rb')

r = lecture , b = binaire

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X