"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que estou recebendo um "UnicodeDecodeError: \'utf-8\' codec can\'t decode byte 0xff in position 0: invalid start byte\" ao decodificar um arquivo em Python?

Por que estou recebendo um "UnicodeDecodeError: \'utf-8\' codec can\'t decode byte 0xff in position 0: invalid start byte\" ao decodificar um arquivo em Python?

Publicado em 2024-11-07
Navegar:377

Why am I receiving a \

Solução de problemas de UnicodeDecodeError na decodificação UTF-8 do Python

Encontrando o erro "UnicodeDecodeError: o codec 'utf-8' não pode decodificar o byte 0xff na posição 0: byte inicial inválido" significa que o Python está tentando decodificar uma sequência de bytes usando UTF-8, mas encontra um byte inicial inválido. Isso ocorre quando uma matriz de bytes, considerada uma string codificada em UTF-8, contém caracteres fora da codificação UTF-8規範。

Causa do erro

No exemplo fornecido, abrir um arquivo usando open(path).read() aciona a tentativa de decodificação. Como o arquivo contém bytes que não estão em conformidade com UTF-8, o processo de decodificação falha, resultando no erro.

Solução

Para resolver esse problema, é imperativo manipular o arquivo como um binário em vez de um arquivo de texto. Isso evita que o Python tente decodificar os bytes como uma string UTF-8.

Ao modificar o código para abrir o arquivo com o modo 'rb', forçamos o Python a ler o arquivo como um binário:

with open(path, 'rb') as f:
    contents = f.read()

Especificar o 'b' no argumento mode instrui o Python a tratar o arquivo como um fluxo binário, garantindo que o conteúdo permaneça um objeto bytes, sem qualquer tentativa de decodificação.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3