J'essaie d'obtenir un programme Python 3 pour effectuer quelques manipulations avec un fichier texte contenant des informations. Cependant, lorsque j'essaie de lire le fichier, l'erreur suivante apparaît:
Traceback (appel le plus récent en dernier):
Fichier "SCRIPT LOCATION", ligne NUMBER, danstext = file.read()
Fichier "C:\Python31\lib\encodings\cp1252.py", ligne 23, en décodagereturn codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: le codec 'charmap' ne peut pas décoder l'octet 0x90 en position 2907500: les mappages de caractères sur<undefined>
Le fichier en question n'utilise pas l'encodage CP1252
. C'est en utilisant un autre encodage. Lequel vous devez trouver vous-même. Les plus courants sont Latin-1
et UTF-8
. Puisque x9 ne signifie en réalité rien dans Latin-1
, UTF-8
(où x9 est un octet de continuation) est plus probable.
Vous spécifiez le codage lorsque vous ouvrez le fichier:
file = open(filename, encoding="utf8")
Dans le prolongement de @LennartRegebro, répondez:
Si vous ne savez pas de quel encodage il s'agit et que la solution ci-dessus ne fonctionne pas (ce n'est pas utf8
) et que vous vous êtes retrouvé en train de deviner - il existe outils en ligne que vous pourriez utiliser pour identifier ce c'est l'encodage. Ils ne sont pas parfaits mais fonctionnent généralement très bien. Après avoir compris le codage, vous devriez pouvoir utiliser la solution ci-dessus.
EDIT: (Copié du commentaire)
Un éditeur de texte assez populaire Sublime Text
dispose d'une commande pour afficher le codage s'il a été défini ...
View
-> Show Console
(ou Ctrl+`)view.encoding()
et espérez que tout ira pour le mieux (je ne pouvais rien obtenir d'autre que Undefined
mais vous aurez peut-être plus de chance ...)Juste pour ajouter au cas où file = open(filename, encoding="utf8")
ne fonctionne pas essayez file = open(filename, errors='ignore')
Sinon, si vous n'avez pas besoin de décoder le fichier, tel que le télécharger sur un site Web, open(filename, 'rb')
. r = lecture, b = binaire