Кодировка кириллицы в консоле при использовании os.popen

Вместо кириллицы выводит какие-то символы, что-то вроде этого. Как исправить?

import os
print(os.popen('dir').read())
# ‹®Є «мл© ¤аҐб Є 

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

Автор решения: Viewed

Проблема кодировки. Полагаю, что поможет один из следующих вариантов. Возьмите один.

import os

# Вариант 1
# после этого остальные варианты некорректны, перезапуск консоли понадобится
print(os.popen('chcp 1251').read()) 
print(os.popen('dir').read())

# Вариант 2
print(os.popen('dir').read().encode('cp1251').decode('cp866'))

# Вариант 3
import _locale
_locale._getdefaultlocale = (lambda *args: ['ru', 'cp866'])
print(os.popen('dir').read())
→ Ссылка