Следующая программа очень проста. Он запускает подпроцесс, который запускает порт Windows утилиты Unix less .
import subprocess
subprocess.run('less.exe', input='Macarrão é uma delícia.', encoding='utf-8')
Ввод:
Macarrão é uma delícia.
Вывод, однако, выглядит как:
Macarrão é uma delícia.
Чем это объясняется? Я заметил, что запуск chcp 65001
перед запуском моего кода на python решает проблему, но просматривая связанный пост Я не уверен, что это лучший способ сделать это. Цитата из принятого ответа:
chcp 65001 очень опасен. Если программа не была специально разработана
работать с дефектами в API Windows (или использует среду выполнения C
библиотека, которая имеет эти обходные пути), она не будет работать надежно.
Win8 исправляет ½ этих проблем с cp65001
, но остальное все еще
применимо к Win10 .
Я использую Python 3.7.0 в 64-разрядной версии Windows 10.