2017-12-09 4 views
1

Ich habe Ubuntu von 14.04 (Python 3.4.3) auf 16.04 (Python 3.5.2) aktualisiert. Jetzt kann mein Skript nicht eine Datei mit der Codierung CP1251 lesen:Python3 UnicodeDecodeError, kann keine Datei mit cp1251 Codierung lesen

with open(fs[0], encoding='cp1251') as f: 
    lines = f.readlines() 
    f.close() 

Es gibt einen Fehler:

Traceback (most recent call last): 
    File "/home/michael/PycharmProjects/Rad/get_info.py", line 9, in <module> 
    r.get_tests() 
    File "/home/michael/PycharmProjects/Rad/rad.py", line 166, in get_tests 
    s = f.readlines() 
    File "/usr/lib/python3.5/encodings/cp1251.py", line 23, in decode 
    return codecs.charmap_decode(input,self.errors,decoding_table)[0] 
UnicodeDecodeError: 'charmap' codec can't decode byte 0x98 in position 13: character maps to <undefined> 

Process finished with exit code 1 

Debugging führt zu dem dieser Code in der Datei /usr/lib/python3.5/encodings/cp1251.py:

class IncrementalDecoder(codecs.IncrementalDecoder): 
    def decode(self, input, final=False): 
     return codecs.charmap_decode(input,self.errors,decoding_table)[0] 

Was wurde in dieser Python-Version geändert und wie kann dieser Fehler vermieden werden?

+0

sind Sie sicher, dass Ihre Datei wird CP1251 codiert? was ist mit utf8? –

+0

Ich zweite @ ChihebNexus, sagt das Codecs-Modul tatsächlich ''\ ufffe' # 0x98 -> UNDEFINED' – ezdazuzena

+0

Ja bin ich sicher über die Codierung. –

Antwort

1

So fand ich a way diese Fehler zu beheben, die sowohl in Python 2 und 3 funktioniert:

import codecs 
........... 
with codecs.open(fs[0], encoding='cp1251', errors='replace') as f: 
    lines = f.readlines() 
    f.close() 
Verwandte Themen