2

QProcessからのUnicode出力の処理に問題があります。次の例を実行すると、?? 中文の代わりに。Unicode出力を取得する方法を教えてもらえますか?

from PyQt4.QtCore import *

def on_ready_stdout():
    byte_array = proc.readAllStandardOutput()
    print 'byte_array: ', byte_array
    print 'unicode: ', unicode(byte_array)

proc = QProcess()
proc.connect(proc, SIGNAL('readyReadStandardOutput()'), on_ready_stdout)
proc.start(u'python -c "print \'hello 中文\'"')
proc.waitForFinished()

@serge 変更したコードを実行しようとしましたが、エラーが発生します:

byte_array:  hello Σ╕¡µ??

unicode:
Traceback (most recent call last):
  File "python_temp.py", line 7, in on_ready_stdout
    print 'unicode: ', unicode(byte_array)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 6: ordinal
not in range(128)
4

1 に答える 1

0

私はあなたのコードを少し変更し、期待される出力を得ました:

byte_array:  hello 中文

unicode:  hello 中文

私の変更は次のとおりです。

  1. # - -coding: utf-8 - - マジックコメントを追加しました (詳細はこちら)
  2. proc.start 呼び出しから「u」文字列宣言を削除

以下は、私の変更を加えたコードです。

# -*- coding: utf-8 -*-
from PyQt4.QtCore import *

def on_ready_stdout():
    byte_array = proc.readAllStandardOutput()
    print 'byte_array: ', byte_array
    print 'unicode: ', unicode(byte_array)

proc = QProcess()
proc.connect(proc, SIGNAL('readyReadStandardOutput()'), on_ready_stdout)
proc.start('python -c "print \'hello 中文\'"')
proc.waitForFinished()

これが役に立てば幸いです、よろしく

于 2010-09-06T02:48:57.913 に答える