0

Добрый вечер!

Проблема следующего характера:

file_msg = input('Enter text files with your message: ')  
file_with_msg = open(file_msg + '.txt').read()

Открываю файл с текстом на русском языке, а при попытке вывести текст в cmd, выводятся иероглифы непонятные.
Подскажите, как можно решить данную проблему?
Кодировка текста - cp1252
Кодировка консоли - 866.

Результат вывода:
C:\>python test.py Enter text files with your message: msg2 i>??YN??????чN'

Используя print(ascii(file_with_msg)) получаю
C:\>python test.py Enter text files with your message: msg2 '\xef\xbb\xbf\xd0\u0178\xd1\u20ac\xd0\xb8\xd0\xb2\xd0\xb5\xd1\u201a'

Artem
  • 173

1 Answers1

1

Вам следует использовать utf-8-sig кодировку при чтении файла:

with open('файл.txt', encoding='utf-8-sig') as file:
    text = file.read()
print(text)  # -> Привет

Когда вы читаете этот файл, используя locale.getpreferredencoding() кодировку (по умолчанию для open()), то получается '\xef\xbb\xbf', что (превратив в байты) выглядит как BOM в UTF-8.

jfs
  • 52,361