Python 无法解码ipconfig的输出

Python 无法解码ipconfig的输出,python,cmd,Python,Cmd,我想将ipconfig命令的输出分配给字符串,但无法对其进行解码 当我尝试这个: import subprocess out = subprocess.check_output("ipconfig",shell = True) out = out.decode('utf-8') print(out) 我得到这个错误: UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa7 in position 192: invalid start b

我想将ipconfig命令的输出分配给字符串,但无法对其进行解码

当我尝试这个:

import subprocess
out = subprocess.check_output("ipconfig",shell = True)
out = out.decode('utf-8')
print(out)
我得到这个错误:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa7 in position 192: invalid start byte

是什么导致此问题?

看起来您的区域设置有问题。尝试将LANG=C环境变量传递给子流程

out = subprocess.check_output("ipconfig", env={"LANG": "C"}, shell = True)

看起来您正在尝试将十六进制编码为字符串。 在我的例子中,macOS ipconfig需要添加如下命令:

waitall、getifaddr、ifcount、getoption、getpacket、getv6packet、set、setverbose

尝试:

import subprocess
out = subprocess.check_output("ifconfig",shell = True)
out = out.decode('utf-8')
print(out)

我找到了解决办法。它现在起作用了。我定义了一个将字节逐个编码为字符的函数

def cool_decode(rose):
    output = ""
    for i in rose:
        output = output + chr(i)
    return output

你们有什么python版本和操作系统?我在Windows10上的Python3.6中试用过,效果很好。您要解码的实际字符串是什么?显然它不在UTF-8中。AFAIK Windows不会将其输出编码为UTF-8,而是根据您的语言进行编码。在法语中,Windows以ISO-8859-15I对其输出进行编码。我正在Windows 10@nick上使用Python 3.7