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

VS Code Python环境stdout乱码问题:系统编码为chcp 850

解决VS Code Python环境subprocess输出乱码问题

问题根源

你的系统CMD/PowerShell使用chcp 850编码,ipconfig/getmac这类命令输出的是CP850编码的文本;但VS Code终端默认是UTF-8,Python的subprocess如果编码匹配错误,就会导致拉丁字符(í、á、ó等)显示成奇怪符号。另外你代码里的strip('UTF-8')是完全错误的用法——strip是用来移除字符串首尾指定字符的,和编码无关,只会乱删字符。

修复方案

直接在subprocess.run里指定编码为CP850,让Python正确捕获命令输出的文本,之后输出到VS Code的UTF-8终端就能正常显示了。

修改后的代码

import subprocess

def ejecutar_comando(comando_Red):
    # 指定编码为CP850,匹配系统命令行的输出编码
    resultado = subprocess.run(comando_Red, shell=True, capture_output=True, text=True, encoding='cp850')
    return resultado.stdout.strip()

comando_Red = [
    "ipconfig /all",
    "getmac"
]

for comando in comando_Red :
    salida = ejecutar_comando(comando)
    print(salida)

另一种写法(不用text=True)

如果不想用text=True,可以手动解码字节流:

import subprocess

def ejecutar_comando(comando_Red):
    resultado = subprocess.run(comando_Red, shell=True, capture_output=True)
    # 用CP850解码命令输出的字节数据
    return resultado.stdout.decode('cp850').strip()

验证效果

修改后运行代码,输出里的í、á、ó等拉丁字符就能正常显示,和你在CMD/PowerShell里直接执行命令的效果一致。

内容的提问来源于stack exchange,提问作者alonso garcia garcia

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 18:50:06