Проблемы с кодировками при работе с консолью python3

Выполнив вот такой вот чудесный код

>>> import os
>>> os.popen('ping 8.8.8.8').read()

Я получаю очень чудесный результат в связи с тем что у меня консоль винды на русском

'\nЋЎ¬Ґ\xad Ї\xa0ЄҐв\xa0¬Ё б 8.8.8.8 Ї® б 32 Ў\xa0©в\xa0¬Ё ¤\xa0\xad\xadле:\nЋвўҐв ®в 8.8.8.8: зЁб«® Ў\xa0©в=32 ўаҐ¬п=35¬б TTL=59\nЋвўҐв ®в 8.8.8.8: зЁб«® Ў\xa0©в=32 ўаҐ¬п=35¬б TTL=59\nЋвўҐв ®в 8.8.8.8: зЁб«® Ў\xa0©в=32 ўаҐ¬п=38¬б TTL=59\nЋвўҐв ®в 8.8.8.8: зЁб«® Ў\xa0©в=32 ўаҐ¬п=36¬б TTL=59\n\n‘в\xa0вЁбвЁЄ\xa0 Ping ¤«п 8.8.8.8:\n    Џ\xa0ЄҐв®ў: ®вЇа\xa0ў«Ґ\xad® = 4, Ї®«гзҐ\xad® = 4, Ї®вҐап\xad® = 0\n    (0% Ї®вҐам)\nЏаЁЎ«Ё§ЁвҐ«м\xad®Ґ ўаҐ¬п ЇаЁҐ¬\xa0-ЇҐаҐ¤\xa0зЁ ў ¬б:\n    ЊЁ\xadЁ¬\xa0«м\xad®Ґ = 35¬бҐЄ, Њ\xa0ЄбЁ¬\xa0«м\xad®Ґ = 38 ¬бҐЄ, ‘।\xadҐҐ = 36 ¬бҐЄ\n'

Как сделать нормальный вывод не меняя язык винды?


Ответы (1 шт):

Автор решения: GrAnd
>>> import os
>>> os.popen('ping 8.8.8.8').read().encode('cp1251').decode('cp866')
'\nОбмен пакетами с 8.8.8.8 по с 32 байтами данных:\nОтвет от 8.8.8.8: число байт=32 время=14мс TTL=60\nОтвет от 8.8.8.8: число байт=32 время=14мс TTL=60\nОтвет от 8.8.8.8: число байт=32 время=14мс TTL=60\nОтвет от 8.8.8.8: число байт=32 время=14мс TTL=60\n\nСтатистика Ping для 8.8.8.8:\n    Пакетов: отправлено = 4, получено = 4, потеряно = 0\n    (0% потерь)\nПриблизительное время приема-передачи в мс:\n    Минимальное = 14мсек, Максимальное = 14 мсек, Среднее = 14 мсек\n'
→ Ссылка