UnicodeDecodeError: il codec ‘charmap’ non può decodificare il byte X in posizione Y: i caratteri vengono mappati a

Sto cercando di ottenere un programma Python 3 per fare alcune manipolazioni con un file di testo pieno di informazioni. Tuttavia, quando provo a leggere il file ottengo il seguente errore:

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 qualcuno potesse darmi un aiuto per cercare di superare questo problema, sarei molto grato.

Il file in questione non sta utilizzando la codifica CP1252 . Sta usando un’altra codifica. Quale devi capire da solo. Quelli comuni sono Latin-1 e UTF-8 . Poiché 0x90 in realtà non significa nulla in Latin-1 , UTF-8 (dove 0x90 è un byte di continuazione) è più probabile.

Si specifica la codifica quando si apre il file:

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

Come estensione alla risposta @LennartRegebro:

Se non puoi dire quale codifica è e la soluzione sopra non funziona (non è utf8 ) e ti sei trovato solo a indovinare – ci sono strumenti online che puoi usare per identificare quale codifica è. Non sono perfetti ma di solito funzionano bene. Dopo aver capito la codifica, dovresti essere in grado di usare la soluzione sopra.

EDIT: (Copiato dal commento)

Un editor di testo molto popolare Sublime Text ha un comando per visualizzare la codifica se è stata impostata …

  1. Vai a View -> Show Console (o Ctrl + ` )

inserisci la descrizione dell'immagine qui

  1. Digita nel campo in basso view.encoding() e spera per il meglio (non sono riuscito a ottenere altro che Undefined ma forse avresti miglior fortuna …)

inserisci la descrizione dell'immagine qui

Giusto per aggiungere nel caso file = open(filename, encoding="utf8") non funziona try file = open(filename, errors='ignore')

Tutto bene