一肖没有脾气 发表于 2021-4-27 11:17

python在使用ADB工具控制抖音的时候输出文本出现中文乱码,百度过网上说是ADB版本导致

在输出的时候,文本内容如果是中文的话,会出现乱码,英文或者表情包就不会,我查过度娘,大概可以肯定要么就是由于我的ADB版本太低导致,要么就是pycharm编码问题,在此来请教各路神仙,到底我该怎么解决?

wginui 发表于 2021-4-27 13:01

调用CMD执行,所有语言都是这样

kicebeauty 发表于 2021-4-27 13:36

使用subprocess.popen获取返回二进制数据,decode到utf-8打印出来试试呢

Maple2d 发表于 2021-4-27 13:42

我记得这个问题还真是ADB版本造成了,装个比较新的版本就好了

一肖没有脾气 发表于 2021-4-27 14:08

Maple2d 发表于 2021-4-27 13:42
我记得这个问题还真是ADB版本造成了,装个比较新的版本就好了

在哪可以下载ADB最新版本啊,老哥。我看到网上是1.0.39版本不会,但是我去网上搜了一下说是这个版本的ADB回来装,但是还是一样的问题

一肖没有脾气 发表于 2021-4-27 14:09

kicebeauty 发表于 2021-4-27 13:36
使用subprocess.popen获取返回二进制数据,decode到utf-8打印出来试试呢

能否详细讲解一下,怎么使用subprocess.popen获取返回二进制数据

kicebeauty 发表于 2021-4-27 15:36

一肖没有脾气 发表于 2021-4-27 14:09
能否详细讲解一下,怎么使用subprocess.popen获取返回二进制数据

def subprocess_popen(statement):
    p = subprocess.Popen(statement, shell=True, stdout=subprocess.PIPE)# 执行shell语句并定义输出格式
    while p.poll() is None:# 判断进程是否结束(Popen.poll()用于检查子进程(命令)是否已经执行结束,没结束返回None,结束后返回状态码)
      if p.wait() != 0:# 判断是否执行成功(Popen.wait()等待子进程结束,并返回状态码;如果设置并且在timeout指定的秒数之后进程还没有结束,将会抛出一个TimeoutExpired异常。)
            print("命令执行失败,请检查设备连接状态")
            return False
      else:
            re = p.stdout.readlines()# 获取原始执行结果
            result = []
            for i in range(len(re)):# 由于原始结果需要转换编码,所以循环转为utf8编码并且去除\n换行
                res = re.decode('utf-8').strip('\r\n')
                result.append(res)
            return result
    return True

一肖没有脾气 发表于 2021-4-29 08:35

kicebeauty 发表于 2021-4-27 15:36
def subprocess_popen(statement):
    p = subprocess.Popen(statement, shell=True, stdout=subproces ...

谢谢,多谢指教
页: [1]
查看完整版本: python在使用ADB工具控制抖音的时候输出文本出现中文乱码,百度过网上说是ADB版本导致