Maison >développement back-end >Tutoriel Python >Pourquoi est-ce que je reçois une erreur UnicodeDecodeError : le codec \'utf-8\' ne peut pas décoder l'octet lors d'une itération dans un fichier texte ?

Pourquoi est-ce que je reçois une erreur UnicodeDecodeError : le codec \'utf-8\' ne peut pas décoder l'octet lors d'une itération dans un fichier texte ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-04 13:35:011046parcourir

Why am I getting a UnicodeDecodeError: 'utf-8' codec can't decode byte when iterating through a text file?

"pour la ligne dans..." Résultats dans UnicodeDecodeError : le codec 'utf-8' ne peut pas décoder l'octet

Lors de la tentative de Parcourez les lignes d'un fichier texte en utilisant la syntaxe "for line in open('filename')", les programmeurs peuvent rencontrer une UnicodeDecodeError indiquant que le codec 'utf-8' ne peut pas décoder un octet particulier. Cette erreur se produit généralement lorsque l'encodage du fichier texte ne correspond pas à l'encodage assumé par le codec « utf-8 ».

Résoudre le problème

Pour résoudre ce problème erreur, il est nécessaire de préciser le bon encodage du fichier texte lors de son ouverture. Ceci peut être réalisé en ajoutant un paramètre "encoding=" à la fonction open(), comme indiqué ci-dessous :

<code class="python">for line in open('filename', encoding='utf-8'):
    # Read each line</code>

Dans certains cas, l'encodage spécifié peut ne pas être correct, conduisant à la même erreur. Pour déterminer l'encodage approprié, les programmeurs peuvent inspecter le fichier texte et identifier le jeu de caractères utilisé.

À titre d'exemple, l'extrait de code fourni par l'interrogateur :

<code class="python">for line in open('u.item'):
    # Read each line</code>

Échec du décodage du fichier texte car le codage a été supposé à tort être « utf-8 ». En inspectant le fichier texte, il a été constaté que le codage correct était « ISO-8859-1 ». La modification du code comme suit a résolu le problème :

<code class="python">for line in open('u.item', encoding='ISO-8859-1'):
    # Read each line</code>

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