Кодировка Windows изменилась при перенаправлении вывода - PullRequest
5 голосов
/ 23 июня 2019

Привет, у меня есть следующий файл python 'test.py':

import sys
print(sys.stdout.encoding)
sys.stdout.reconfigure(encoding='utf-8') 
print(sys.stdout.encoding)

когда я бегу

py test.py

Я получаю:

utf-8
utf-8

но когда я бегу

py test.py > test.txt

или

py test.py | Out-File -FilePath test.txt -Encoding ASCII

Я получаю из test.txt:

cp1252
utf-8

Обновление: когда я запускаю следующий код Python:

import sys, locale
print(sys.getdefaultencoding())
print(locale.getpreferredencoding())

Я получаю:

utf-8
cp1252

Вопрос:
Могу ли я знать, почему это происходит и что я должен сделать, чтобы при перенаправлении по умолчанию использовалась кодировка utf-8?
Спасибо

1 Ответ

0 голосов
/ 24 июня 2019

Вы используете Windows. Это происходит потому, что консоль Windows 7 не понимает UTF-8. Поэтому при отображении стандартного вывода его необходимо кодировать так, как может отображать Windows.

Книга Лучано Рамальо Свободный Питон действительно хорошо объясняет это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...