Обработка ошибок Unicode с помощью Python 3 readlines()
Я продолжаю получать эту ошибку при чтении текстового файла. Можно ли обрабатывать/игнорировать его и продолжать?
UnicodeEncodeError: 'charmap codec can not decode byte 0x81 в позиции 7827: символьные карты на undefined.
Ответ 1
В Python 3 передайте соответствующее значение errors= (например, errors=ignore или errors=replace) при создании вашего файлового объекта (предположим, что это подкласс io.TextIOWrapper), и если это не так, подумайте об упаковке в одном!); также рассмотрите более вероятную кодировку, чем charmap (когда вы не уверены, utf-8 всегда полезно начать).
Например:
f = open('misc-notes.txt', encoding='utf-8', errors='ignore')
В Python 2 операция read() просто возвращает байты; трюк, тогда, расшифровывает их, чтобы получить их в строку (если вы действительно хотите, чтобы символы, а не байты). Если у вас нет лучшего предположения для их реальной кодировки:
your_string.decode('utf-8', 'replace')
... для замены необработанных символов или
your_string.decode('utf-8', 'ignore')
чтобы просто игнорировать их.
Тем не менее, предпочтительнее найти и использовать их реальную кодировку (а не гадать utf-8).
Ответ 2
Вы должны открыть файл с помощью кодеков, чтобы убедиться, что файл интерпретируется как UTF8.
import codecs
fd = codecs.open(filename,'r',encoding='utf-8')
data = fd.read()