gpt4 book ai didi

python - Pyqt - QProcess/readAllStandardOutput() - 编码?

转载 作者:太空宇宙 更新时间:2023-11-03 15:45:54 37 4
gpt4 key购买 nike

我有以下代码来启动 .bat 文件并读取进程的输出:

def WriteFirmwareButtonEvent(self):

self.process = QProcess(self)
self.process.setProcessChannelMode(QProcess.MergedChannels)
self.process.readyReadStandardOutput.connect(self.EventDataForReadFromCMD)
self.process.start("run.bat")

def EventDataForReadFromCMD(self):
...

我已经尝试过:

...
output = bytearray(self.process.readAllStandardOutput())
output = output.decode(xxx)
print (output)

但是任何编码都会给我关于解码第四个字符的错误所以我尝试了纯转换为Python字符串:

...
output = str(self.process.readAllStandardOutput())
print (output)

会给我:

b'Syst\x82m nem\x85\xa7e nal\x82zt uvedenou cestu.\r\n'

...
output = QByteArray(self.process.readAllStandardOutput())
test = QTextCodec.codecForLocale()
test = test.toUnicode(output)

编码时遇到同样的问题未知字符 4

但是如果我从 CMD 输出手动运行脚本应该如下所示:

Systém nemůže nalézt uvedenou cestu.

QProcess 的输出有一些特殊的编码吗?以及他的阅读方法?

我现在唯一能做的就是为每个未知字符定义我自己的编码循环,我希望有更好的解决方案。

最佳答案

好吧,我找到了答案...

        ...
output = bytearray(self.process.readAllStandardOutput())
output = output.decode(self.GetCMD_Encoding())
print (output)

def GetCMD_Encoding(self):

CMD = QProcess(self)
CMD.setProcessChannelMode(QProcess.MergedChannels)
CMD.start("C:\Windows\System32\chcp.com")
CMD.waitForReadyRead()
output = bytearray(CMD.readAllStandardOutput())
output = output.decode("ascii")
output = output[18:]
return "cp" + output

输出:

Systém nemůže nalézt uvedenou cestu.

关于python - Pyqt - QProcess/readAllStandardOutput() - 编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41761132/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com