Ваш файл не закодирован в UTF-8.Кодировка контролируется инструментом, используемым для создания файла.Убедитесь, что вы используете правильную кодировку.
Вот пример:
>>> s = 'Sébastien Chabrol'
>>> s.encode('utf8') # é in UTF-8 is encoded as bytes C3 A9.
b'S\xc3\xa9bastien Chabrol'
>>> s.encode('cp1252') # é in cp1252 is encoded as byte E9.
b'S\xe9bastien Chabrol'
>>> s.encode('utf8').decode('1252') # decoding incorrectly can produce wrong characters...
'Sébastien Chabrol'
>>> s.encode('cp1252').decode('utf8') # or just fail.
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe9 in position 1: invalid continuation byte
Если вы используете Python 3, вы можете указать кодировку при открытии файла:
a = open('file.txt','r',encoding='utf8')
В Python 2 или 3 вы также можете использовать обратно-совместимый синтаксис:
import io
a = io.open('file.txt','r',encoding='utf8')
Если вы не имеете представления о кодировке, вы можете открыть в двоичном режиме, чтобы увидеть необработанное содержимое байта и вхотя бы сделайте предположение:
a = open('file.txt','rb')
print(a.read())
Подробнее о Python и кодировках здесь: https://nedbatchelder.com/text/unipain.html