Несколько замечаний:
(1) Это, конечно, не sys.getdefaultencoding
.
(2) sys.stdin.encoding
представляется намного лучшей ставкой.
(3) В Windows фактическое значение sys.stdin.encoding
будет варьироваться в зависимости от того, какое программное обеспечение предоставляет stdio.IDLE будет использовать системную кодовую страницу «ANSI», например, cp1252
в большинстве стран Западной Европы и Америки и в их бывших колониях.Однако в окне командной строки, которое более или менее эмулирует MS-DOS, по умолчанию будет использоваться соответствующая старая кодовая страница DOS (например, cp850).Это можно изменить с помощью команды CHCP (изменить кодовую страницу).
(4) Документация для модуля подпроцесса не содержит никаких предложений о том, какую кодировку использовать для args и stdout.
(5) Мы верим, что assert sys.stdin.encoding == sys.stdout.encoding
никогда не подведет.