Ответ 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
).