Неверная кодировка при чтении файла
Что делать, если при чтении файла (текста в формате .txt) и выводе с помощью функции print(), кириллица превращается в непонятные символы?
Исходный код:
file = open('text.txt','r')
text = file.read()
print(text)
Ответы (3 шт):
Когда открываете файл - делайте это с правильной кодировкой. Если у вас входной файл в кодировке utf8, то вот так:
file = open('text.txt','r', encoding="utf-8")
Если в "Блокноте" кодировка показывается правильная, значит у файла родная кодировка Windows - cp1251, эту кодировку и нужно указать при открытии файла:
with open('text.txt', 'r', encoding='cp1251') as file:
text = file.read()
print(text)
Из официальной документации по функции open():
In text mode, if encoding is not specified the encoding used is platform dependent:
locale.getpreferredencoding(False)is called to get the current locale encoding.
Т.е. кодировка по умолчанию может отличаться от системы к системе.
Соответственно если файл сохранен в кодировке отличающейся от той, которую возвращает функция locale.getpreferredencoding(False), тогда лучше явно задать правильную кодировку при открытии файла.
