解决:Python的os.popen()在read()时,出现“�Ҳ����ļ�乱码及结果错误”的问题

文章讲述了在Python中使用os.popen处理含空格目录路径时出现的乱码和解析错误问题,以及解决方案。通过在路径字符串外添加英文双引号可解决cmd对空格的敏感问题,同时提到了在使用原始字符串(r)时,路径中反斜杠的正确使用方法,避免额外的转义字符影响cmd的识别。

目录

1、问题 复现

2、解决 措施

3、原因

4、其他原因及解决办法


1、问题 复现

(1)新建有2个空文件夹:

(2)运行代码:

#! /usr/bin/env python3
# -*- coding: UTF-8 -*-
import os
import time


def getDirList(dir_path):
    res = os.popen(f'dir {dir_path}')
    print(res.read())


if __name__ == '__main__':
    # 1
    my_dir_path = r'D:\2008文档\★   123'
    getDirList(my_dir_path)

    time.sleep(1)
    print('========================')
    print('本次运行脚本的路径:' + __file__)
    print('========================')
    
    # 2
    my_dir_path = r'D:\2008文档\★中文'
    getDirList(my_dir_path)

(3)运行结果:

可以看到:实际上,不仅是出现了乱码问题,所返回的目录信息也是异常的(如:出现了本次运行脚本的目录信息……)

2、解决 措施

在目录路径的外围(且在字符串内),再加一对英文双引号(形如:"$path")即可,如下:

# 原来
# my_dir_path = r'D:\★   123'

# 修改后
my_dir_path = r'"D:\★   123"'

(2)代码验证:

#! /usr/bin/env python3
# -*- coding: UTF-8 -*-
import os
import time


def getDirList(dir_path):
    res = os.popen(f'''dir {dir_path}''')
    print(res.read())


if __name__ == '__main__':
    # 1(字符串中的“路径”外围,加入了一对英文双引号)
    my_dir_path = r'"D:\2008文档\★   123"'
    getDirList(my_dir_path)

    time.sleep(1)
    print('========================')
    print('本次运行脚本的路径:' + __file__)
    print('========================')

    # 2
    my_dir_path = r'D:\2008文档\★中文'
    getDirList(my_dir_path)

(3)验证结果:(正常)

3、原因

解决问题之初,本以为是“特殊字符+空格”导致问题的。多次尝试问题复现后,才发现归因错误——真正的问题制造者,就是“空格”。

os.popen() 方法,实质上是Python在cmd中输入我们设置的命令,并返回cmd执行后的结果(相当于Python外包给了cmd)。

cmd对空格敏感(类似于Python中的str.split() 方法),会将含有空格的字符串内容断开,导致cmd无法识别命令而出错。

借助英文形式双引号,则令cmd将该含有空格的字符串内容,看作一个整体/参数。

4、其他原因及解决办法

如果在使用Python中的字符串时,习惯在路径字符串前添加“r”,如下:

my_dir_path = r'"D:\2008文档"'

那就需要注意:在路径名的字符串末尾,不得不添加类如“\”(反斜杠)的字符的情况下,应使用“/”(正斜杠)字符,而非“\\”。

原因:

字符串前缀r,表示该字符串是原始字符串,即没有转义符,所含字符全为单纯的符号。

同时,r'xxxx\' 这样以单一的反斜杠字符结尾的形式,是无法通过python解释器的(不清楚这是不是个bug……)。而使用r'xxxx\\'字符串可以通过python解释器,但会多出一个“无处安放”的反斜杠,导致cmd无法识别。

示例语句如下:

# 以下3句中, 路径字符串 的语义是等价、正确的
# 1
my_dir_path = r'D:/'

# 2
my_dir_path = 'D:/'

# 3
my_dir_path = 'D:\\'


# xxxxxxxxxxxxxxxxxxxxxxxxxx
# 错误的写法
my_dir_path = r'D:\\'

<think>嗯,用户在使用Python的subprocess.Popen执行bat文件遇到了乱码问题,需要解决编码问题。首先,我得回忆一下Python处理子进程输出常见的编码问题。通常,这类问题是因为输入或输出的编码与系统默认编码不一致导致的。特别是Windows系统,默认编码通常是GBK或者cp936,而Python脚本可能使用的是UTF-8,这就容易导致乱码。 根据用户提供的引用,引用[1]和[2]提到了使用sys.getfilesystemencoding()和显式解码的方法。比如,subprocess.call需要正确编码命令字符串,而处理输出可能需要用cp936解码后再转成UTF-8。用户的问题是关于执行bat文件,可能bat文件本身的输出是GBK编码的,所以在Python中读取需要正确解码。 接下来,我需要考虑用户的具体情况。他们可能是在执行bat文件,bat文件输出了中文,而Python没有正确解码这些字节流,导致乱码解决方案应该包括指定正确的编码方式,比如设置stdout的编码为'gbk',或者在获取输出后手动解码。 另外,引用[5]提到了使用decode方法并处理错误,比如忽略非法字符,这可能也是一个解决办法。同,需要检查系统区域设置,确认控制台的编码是否为GBK,有候修改代码页为65001(UTF-8)也可能有效,但可能会有其他问题,比如字体不支持。 可能的步骤包括: 1. 在创建Popen指定编码为'gbk',这样stdout和stderr会自动解码。 2. 手动处理输出,使用decode('gbk')来转换字节流。 3. 设置环境变量PYTHONIOENCODING为UTF-8,或者在脚本开头设置默认编码。 4. 检查bat文件本身的编码,确保其保存为GBK或与系统一致的编码。 需要注意的是,Windows的控制台默认编码可能不是UTF-8,因此即使代码中正确解码,打印到控制台仍可能出现乱码,这可能需要调整控制台的编码设置,或者将输出写入文件并使用正确编码打开。 此外,用户提到使用subprocess.Popen执行bat文件,可能需要考虑bat文件内部命令的输出编码,比如echo中文,是否在bat文件中正确处理了编码。或者,是否在Python中正确配置了shell的环境。 总结解决方案的步骤应该是:确保输入输出的编码一致,正确解码子进程的输出,处理可能的错误字符,调整系统或控制台的编码设置。</think>### Python执行bat文件乱码解决方案 使用`subprocess.Popen`执行bat文件出现中文乱码,主要原因是Windows系统默认使用GBK编码(CP936),而Python脚本可能采用UTF-8编码。以下是分步解决方案: --- #### 1. **显式指定编码格式** 在创建`Popen`对象,通过`encoding`参数强制指定编码: ```python import subprocess cmd = "test.bat" process = subprocess.Popen( cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, encoding='gbk' # 关键:Windows系统默认编码为GBK ) output, error = process.communicate() print("输出结果:", output) ``` --- #### 2. **手动解码字节流** 如果未指定`encoding`,需手动对输出进行GBK解码: ```python process = subprocess.Popen( cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE ) output_bytes, error_bytes = process.communicate() # 使用GBK解码并忽略非法字符 output = output_bytes.decode('gbk', errors='ignore') print("输出结果:", output) ``` --- #### 3. **修改系统环境变量** 在代码中临设置环境编码(需在子进程启动前生效): ```python import os os.environ['PYTHONIOENCODING'] = 'utf-8' # 强制Python使用UTF-8编码 ``` --- #### 4. **检查bat文件编码** 确保bat文件本身保存为GBK/ANSI编码(可通过记事本另存为选择编码): ![bat文件保存为ANSI编码](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAAAyCAIAAAAU3j+4AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAzsSURBVHhe7VwJcFTVGTY7aKvV1rbVaq1atVpr1Vq1Wm2r1rZaR23r0mpbR6vVjloVtVq1KlZRqyIgi4CQkIR9CSEkIQlZyUY2yL7v+5rNZrP7vX3v3Xffu+/tJhCwDfxnJm/evf+9//3v/5/7n3tfYlwuV4wHDofDZrOZTCa1Wt3d3d3a2lpfX3/16tWqqqrS0tKioqL8/Pzc3Nzs7OyMjIzU1NTk5OSkpKSLFy8mJiZeuHAhISHh/Pnz586dO3v27JkzZ06fPn3q1KmTJ0+eOHHi+PHjx44dO3r06JEjRw4fPnzo0KGDHhw4cGD//v379u3bu3fvHg927969a9eunTt37tixY/v27du2bdu6devHH3+8ZcuWzZs3b9q0aePGjRs2bFi/fv26devWrl27Zs2a1atXr1q1auXKlStWrFi+fPmyZcuWLl26ZMmSxYsXL1q0aOHChQsWLJg/f/68efPmzp07Z86c2bNnz5o1a+bMmTNmzJg+ffq0adOmTp06ZcqUyZMnT5o0aeLEiRMmTBg/fvy4cePGjh07ZsyY0aNHjxo1auTIkSNGjBg+fPiwYcOGDh06ZMiQwYMHDxo0aODAgQMGDPjwww/79+//wQcf9OvX77333nv33Xffeeedd9555+23337rrbfefPPNN9544/XXX3/ttddeffXVV1555eWXX37ppZdefPHFF1544fnnn3/uueeeffbZZ5555umnn37qqaee9ODJJ5984oknHn/88ccee+zRRx995JFHHn744YceeujBBx984IEH7r///vvuu+/ee++955577r777rvuuuvOO++84447br/99ttuu+3WW2+95ZZbbr755ptuuumGG264/vrrr7vuuuuuu+7aa6+95pprrr766quuuurKK6+84oorLr/88ssuu+zSSy+95JJLLr744osuuujCCy+84IILzj///PPOO+/cc88955xzzj777LPOOuvMM88844wzTj/99NNOO+3UU0895ZRTTj755JNOOunEE0884YQTjj/++OOOO+7YY4895phjjj766KOOOuqII444/PDDDzvssEMPPfSQQw45+OCDDzrooAMPPHC//fbbd999991nn3323nvvvffee6+99tpzzz332GOP3Xfffffdd99tt9123XXXnXfeGQ6HXf0VfQvWZ5995nK5HA6H1WrV6/UqlUoikXR0dDQ1NdXW1lZUVBQXF+fn52dlZaWnp6ekpCQlJV24cOHcuXOnT58+fvz40aNHDx8+fPDgwf379+/bt2/Pnj27d+/euXPn9u3bt23btnXr1i1btmzevHnTpk0bN25cv379unXr1q5du2bNmtWrV69atWrlypUrVqxYvnz5smXLli5dumTJksWLFy9atGjhwoULFiyYP3/+vHnz5s6dO2fOnNmzZ8+aNWvmzJkzZsyYPn36tGnTpk6dOmXKlMmTJ0+aNGnixIkTJkyYMGHC+PHjx40bN3bs2DFjxowePXrUqFEjR44cMWLE8OHDhw0bNnTo0CFDhgwePHjQoEEDBw4cMGBA//79+/Xr98EHH7z//vvvvffeO++88/bbb7/11ltvvvnmG2+88frrr7/22muvvPLKyy+//NJLL7344osvvPDC888//9xzzz377LPPPPPM008//dRTTz355JNPPPHE448//thjjz366KOPPPLIww8//NBDDz344IMPPPDA/ffff999991777333HPP3Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd999991333333Xfffffdd99999991) --- #### 5. **修改控制台代码页** 在Python脚本中临修改CMD代码页为UTF-8: ```python import subprocess import ctypes # 修改控制台编码为UTF-8 kernel32 = ctypes.windll.kernel32 kernel32.SetConsoleOutputCP(65001) process = subprocess.Popen( "test.bat", stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True, encoding='utf-8' ) output, error = process.communicate() print("输出结果:", output) ``` --- ### 关键原理 Windows系统CMD默认使用GBK编码,而Python 3默认使用UTF-8编码。当子进程输出包含中文,若未正确指定编码格式,字节流会被错误解码导致乱码[^1][^2][^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值