You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python调用netsh获取WiFi配置文件时解码失败求助

解决Python解码netsh WiFi配置输出的编码问题

问题根源

Windows命令提示符的默认编码并非UTF-8:中文系统通常采用GBK(或称cp936),英文系统多为cp1252。直接用utf-8解码会因编码不匹配触发UnicodeDecodeError;而latin-1虽不会报错,但会将非ASCII字符转为无意义的乱码,导致输出看似为空。

可行解决方案

1. 指定系统对应编码解码

直接在decode()方法中传入Windows命令行的正确编码(中文系统用gbk即可):

import subprocess
command_output = subprocess.run(["netsh", "wlan", "show", "profiles"], capture_output=True).stdout.decode('gbk')
print(command_output)

2. 让subprocess自动处理编码(Python 3.7+)

使用text=True参数,subprocess会自动识别系统命令行编码并完成解码:

import subprocess
command_output = subprocess.run(["netsh", "wlan", "show", "profiles"], capture_output=True, text=True).stdout
print(command_output)

3. 多编码尝试适配不同系统

如果不确定当前系统编码,可以先捕获字节流,依次尝试常见Windows编码:

import subprocess
output_bytes = subprocess.run(["netsh", "wlan", "show", "profiles"], capture_output=True).stdout

# 遍历常见编码尝试解码
for encoding in ['gbk', 'cp1252', 'utf-8']:
    try:
        command_output = output_bytes.decode(encoding)
        print(f"用{encoding}编码解码成功:")
        print(command_output)
        break
    except UnicodeDecodeError:
        continue

关于latin-1解码的说明

latin-1是单字节编码,会强制将所有字节映射为Unicode字符,因此不会触发解码错误,但非latin-1字符集的内容(比如中文)会被转为乱码,导致输出可读性极差,看起来像是空内容。

内容的提问来源于stack exchange,提问作者Ayaz ismail

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 09:10:06