通过 QProcess 打印 unicode

发布于 2024-09-06 02:45:42 字数 791 浏览 8 评论 0原文

我在处理 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)

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 running 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)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

差↓一点笑了 2024-09-13 02:45:42

我对您的代码进行了一些更改并获得了预期的输出:

byte_array:  hello 中文

unicode:  hello 中文

我的更改是:

  1. 我添加了 # -- 编码: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()

希望这个帮助,问候

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文