UnicodeDecodeError: o codec ‘charmap’ não pode decodificar o byte X na posição Y: o mapeamento de caracteres é

Eu estou tentando obter um programa Python 3 para fazer algumas manipulações com um arquivo de texto preenchido com informações. No entanto, ao tentar ler o arquivo, recebo o seguinte erro:

Traceback (most recent call last): File "SCRIPT LOCATION", line NUMBER, in  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  

Se alguém pudesse me dar alguma ajuda para superar esse problema, ficaria muito grato.

O arquivo em questão não está usando a codificação CP1252 . Está usando outra codificação. Qual deles você tem que descobrir sozinho. Os mais comuns são o Latin-1 e o UTF-8 . Como 0x90 não significa realmente nada no Latin-1 , o UTF-8 (onde 0x90 é um byte de continuação) é mais provável.

Você especifica a codificação quando abre o arquivo:

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

Como uma extensão da resposta de @LennartRegebro:

Se você não pode dizer qual é a codificação e a solução acima não funciona (não é utf8 ) e você se viu apenas adivinhando – existem ferramentas online que você pode usar para identificar qual codificação é essa. Eles não são perfeitos, mas geralmente funcionam bem. Depois de descobrir a codificação, você deve poder usar a solução acima.

EDIT: (copiado do comentário)

Um editor de texto bastante popular, o Sublime Text possui um comando para exibir a codificação …

  1. Vá para View -> Show Console (ou Ctrl + ` )

insira a descrição da imagem aqui

  1. Digite em campo no bottom view.encoding() e espere pelo melhor (eu não consegui nada além de Undefined mas talvez você tenha mais sorte …)

insira a descrição da imagem aqui

Apenas para adicionar no caso file = open(filename, encoding="utf8") não funciona try file = open(filename, errors='ignore')

Tudo está bem