Maison  >  Article  >  développement back-end  >  Pourquoi est-ce que j'obtiens \"UnicodeDecodeError: \'utf-8\' codec can\'t decode byte 0xff...\" lors de la lecture d'un fichier en Python ?

Pourquoi est-ce que j'obtiens \"UnicodeDecodeError: \'utf-8\' codec can\'t decode byte 0xff...\" lors de la lecture d'un fichier en Python ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-04 07:34:02440parcourir

Why am I getting

Comment résoudre « Erreur UnicodeDecodeError : le codec 'utf-8' ne peut pas décoder l'octet 0xff en position 0 : octet de démarrage invalide » ?

Cette erreur dans Python peut survenir lors de la tentative de conversion de données de tableau d'octets en chaîne Unicode à l'aide du codage utf-8, mais la séquence d'octets n'est pas valide selon les règles utf-8.

La cause première dans ce cas, Python interprète le contenu du fichier comme une chaîne codée en utf-8 lors de l'opération de lecture. Cependant, le fichier peut contenir des caractères non utf-8, tels qu'une séquence d'octets (par exemple, 0xff) qui n'est pas un octet de début valide en utf-8.

Pour résoudre cette erreur, considérez la nature de votre fichier et appliquez la solution suivante :

Solution :

Étant donné que le fichier est probablement un fichier binaire, vous devez le traiter comme tel. Modifiez le code de lecture du fichier pour utiliser « rb » comme mode d'ouverture, comme indiqué ci-dessous :

<code class="python">with open(path, 'rb') as f:
  contents = f.read()</code>

En spécifiant « rb », le fichier sera ouvert en mode binaire, en préservant les octets en tant qu'octets plutôt que en les interprétant comme des caractères codés en utf-8. Cela empêchera Python de tenter de décoder la séquence d'octets invalide et évitera l'exception.

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