Maison >développement back-end >Tutoriel Python >Comment corriger une « UnicodeDecodeError » lors de la lecture de fichiers texte en Python ?

Comment corriger une « UnicodeDecodeError » lors de la lecture de fichiers texte en Python ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-13 00:18:22527parcourir

How to Fix a 'UnicodeDecodeError' When Reading Text Files in Python?

Résolution de « UnicodeDecodeError » et conversion d'encodage

En tentant de manipuler des données stockées dans un fichier texte, vous avez rencontré 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>`  

Cette erreur provient d'une inadéquation entre l'encodage supposé (CP1252) et l'encodage réel du fichier. Pour résoudre ce problème, nous devons identifier l'encodage correct et le spécifier explicitement lors de l'ouverture du fichier.

Identifier l'encodage du fichier

Comme indiqué dans la question, déterminer l'encodage du fichier est crucial. Malheureusement, cela doit être fait manuellement. Les encodages courants incluent Latin-1 et UTF-8. Cependant, étant donné que 0x90 n'est pas un caractère valide en Latin-1, UTF-8 est un candidat fort.

Spécifier l'encodage

Une fois que vous avez déterminé l'encodage , vous pouvez le préciser lors de l'ouverture du fichier à l'aide du paramètre encoding :

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

En fournissant le bon encodage, Python pourra décoder correctement le fichier texte et vous permettre de manipuler son contenu sans rencontrer l'exception 'UnicodeDecodeError'.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn