в методе os.popen вместо русских букв выводятся знаки вопроса

если в пути есть русские буквы, то команда

os.popen('cd').read()

выводит просто C:\Users\????????..... что только не пробовал:

  1. для начала вводить os.system('chcp 65001'), но тогда тоже нарушалась кодировка или что то еще
  2. пробовал заменить команду cmd 'cd' на что то другое, но все равно выводилось как то не то
  3. пробовал выводить os.popen('chcp 65001 && cd').read() и с '&'

ну короче ничего не получилось, можете помочь решить эту проблему


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

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

Точно узнать кодировку можно командой print(os.popen('chcp').read()) или в CMD через chcp. Если символы будут сломаны, то числа скорее всего останутся:

введите сюда описание изображения

При кодировке 866 работает следующий код:

os.popen('cd').read().encode('cp1251').decode('cp866')

Кодируем через encode('cp1251'). После через decode('cp866') декодируем строку (нужно выставить ту кодировку, что получена на 1 шаге).

→ Ссылка