UnicodeDecodeError错误求助:utf-8解码netsh命令输出失败
解决UnicodeDecodeError: 'utf-8' codec无法解码字节0xff的问题
问题原因
Windows系统下netsh命令的输出编码并非UTF-8,而是与系统区域设置绑定的编码(比如中文系统常用GBK,或带BOM的UTF-16 LE)。你遇到的0xff字节是UTF-16 LE编码的BOM起始字节,因此用UTF-8解码会触发错误。
解决方案
方案1:指定UTF-16 LE编码解码
直接适配多数Windows环境下的netsh输出编码:
import subprocess meta_data = subprocess.check_output(['netsh', 'wlan', 'show', 'profiles']) print(type(meta_data.decode("utf-16-le")))
方案2:使用系统默认编码
通过系统区域设置自动获取适配编码,兼容性更强:
import subprocess import locale # 获取系统默认编码 system_encoding = locale.getpreferredencoding() meta_data = subprocess.check_output(['netsh', 'wlan', 'show', 'profiles']) print(type(meta_data.decode(system_encoding)))
方案3:临时忽略错误(不推荐)
若仅需临时测试,可通过errors参数跳过解码错误,但会丢失无法解码的内容:
import subprocess meta_data = subprocess.check_output(['netsh', 'wlan', 'show', 'profiles']) print(type(meta_data.decode("utf-8", errors="ignore")))
内容的提问来源于stack exchange,提问作者Med Op
相关产品推荐
相关产品推荐

