У меня есть следующий код для запуска bat-файл и читать выход процесса:Pyqt - QProcess/readAllStandardOutput() - Кодирование?
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)
Но любое кодирование дает мне ошибку о декодировании 4-го символа Таким образом, у меня есть попробовал чисто новообращенный питона строки:
...
output = str(self.process.readAllStandardOutput())
print (output)
даст мне:
b'Syst \ x82m нэм \ x85 \ xa7e NAL \ x82zt uvedenou cestu. \ Г \ п»
...
output = QByteArray(self.process.readAllStandardOutput())
test = QTextCodec.codecForLocale()
test = test.toUnicode(output)
Это же проблема неизвестного характера 4 при кодировании
Но если Я запускаю сценарий вручную из вывода CMD, должен выглядеть следующим образом:
Systém nemůže nalézt uvedenou cestu.
есть ли специальная кодировка вывода из QProcess? и его методы чтения?
Единственное, что я могу сделать прямо сейчас, это определить мой собственный цикл кодирования для каждого неизвестного персонажа, и я надеюсь, что есть лучшее решение.
Вы посмотрели на 'QString :: fromLocal8Bit()' и 'QTextCodec :: codecForLocale()'? –
У PyQt5 больше нет QString –
Я считаю, что 'QTextCodec' по-прежнему доступен. –