Ошибка UnicodeDecodeError: кодек ‘utf-8’ не может декодировать байт 0x81 в позиции 76: недопустимый начальный байт

#python

#python

Вопрос:

Я хочу создать программу, которая декодирует пароли wifi. Я еще не закончил, но программа должна напечатать имена всех wifi. Но есть эта ошибка, и я не знаю, как ее исправить.

 import subprocess

data = subprocess.check_output(["netsh", "wlan", "show", "profiles"]).decode("utf-8").split("n")
wifis = [line.split(":")(1)[1:-1] for line in data if "All User Profile" in line]
print (data)
  

Ошибка:

 data = subprocess.check_output(["netsh", "wlan", "show", "profiles"]).decode("utf-8").split()
  UnicodeDecodeError: 'utf-8' codec can't decode byte 0x81 in position 76: invalid start byte
  

Ответ №1:

netsh это намек на то, что вы используете систему Windows. Консольные приложения часто используют кодировку cp850 для западноевропейских языков. Итак, вы могли бы попробовать :

 data = subprocess.check_output(["netsh", "wlan", "show", "profiles"]).decode("cp850").split("n")
  

Или, чтобы быть в безопасности, вы можете использовать кодировку, способную принимать любой входной байт, например latin1, но она редко возвращает ожидаемые символы в Windows. Но НИКОГДА не используйте utf-8 , если входные данные не закодированы в формате utf-8.