Задать вопрос
@SS_Maksim
Изучаю python

Ошибка UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8f in position 2: invalid start byte?

При выполнении первой функции:
import subprocess

def extract_wifi_passwords():
profiles_data = subprocess.check_output("netsh wlan show profiles").decode("utf-8").split('\n')
print(profiles_data)

extract_wifi_passwords()

возникает ошибка:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8f in position 2: invalid start byte

Подскажите в чем может быть проблема
  • Вопрос задан
  • 2440 просмотров
Подписаться 2 Простой 3 комментария
Помогут разобраться в теме Все курсы
  • Нетология
    Python-разработчик: расширенный курс + нейросети
    12 месяцев
    Далее
  • Академия Эдюсон
    Python-разработчик
    9 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Python-разработчик + ИИ
    8 месяцев
    Далее
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
subprocess.check_output()
By default, this function will return the data as encoded bytes. The actual encoding of the output data may depend on the command being invoked, so the decoding to text will often need to be handled at the application level.

Иными словами, функция возвращает выхлоп команды как есть, а для системных утилит выхлоп легко может зависеть от языка системы. Так что если в примере на видео работает хоть utf-8, хоть ascii, хоть latin-1, это не значит, что они будут работать и у тебя.
На русскоязычных виндах в консоли может встретиться кодировка cp866.

И да, упрёки в твой адрес вполне справедливы. Всего-то делов - посмотреть на название UnicodeDecodeError (ошибка декодирования юникода), посмотреть на то, что ты делаешь .decode('utf-8'), и задуматься, что же такое тебе выдаёт check_output().
А потом глянуть в документацию на неё.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Краснодар
от 220 000 до 300 000 ₽
ITK academy Краснодар
от 75 000 ₽
DimaTech Ltd Краснодар
от 140 000 до 140 000 ₽