Попытка прочитать такой файл может завершиться ошибкой:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc4 in position 25: invalid continuation byte
Всё просто, используем аргумент encoding при открытии файла>>> f = open(filepath, encoding="windows-1251")
А как быть когда кодировка неизвестна? Делать серию try-except перебирая разные варианты? Конечно нет! Можно использовать библиотеку для определение кодировки chardet. >>> import chardet
>>> chardet.detect(open(filepath, 'rb').read())
{'encoding': 'windows-1251', 'confidence': 0.9657063861040789, 'language': 'Russian'}
Функция detect() принимает байты а не строку.Полный код
>>> import chardet
>>> filepath = '...'
>>> enc = chardet.detect(open(filepath, 'rb').read())['encoding']
>>> text = open(filepath, encoding=enc)
#libs
