开发者

printing unicode through a QProcess

I'm having some trouble handling unicode output from a QProcess. When I run the following example I get ?? instead of 中文. Can anyone tell me how to get the unicode output?

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 I tried r开发者_如何学编程unning your modified code, but I get an error:

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)


I've changed your code a little and got the expected output:

byte_array:  hello 中文

unicode:  hello 中文

my changes were:

  1. I added # -- coding: utf-8 -- magic comment (details here)
  2. Removed "u" string declaration from the proc.start call

below is your code with my changes:

# -*- 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()

hope this helps, regards

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜