2010-06-19 2 views
1

Q 프로세스에서 유니 코드 출력을 처리하는 데 문제가 있습니다. 다음 예제를 실행하면 얻을 수 있습니까 ?? 대신 中文. 누구든지 유니 코드 출력을 얻는 방법을 말해 줄 수 있습니까?Q 프로세스를 통해 유니 코드 인쇄

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) 
+0

지금은 UTF-8 프로그램 파일의 파일 형식에 관하여? –

+0

예. _____________________ –

답변

0

예상되는 출력을 가지고 :

byte_array: hello 中文 

unicode: hello 中文 

내 변경 사항은 다음과 같습니다.

    0 아래

내 변경하여 코드 마법 코멘트 (자세한 내용 here)을 proc.start 통화에서

  • 제거 "U"문자열 선언 - UTF-8-을 : - - 코딩
  • 나는 # 추가 :이 도움이

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

    희망,

  • +0

    오류가 발생했습니다. 나는 나의 질문을 편집했다. –

    +0

    유니 코드 (byte_array)가이 예외를 던졌습니다. 제거하거나 주석으로 처리해야하는 경우이 변환이 필요하지 않은 것처럼 보입니다. 어쨌든 byte_array는 더 이상 8 비트 문자열이 아니므로이 예외가 발생합니다. –

    +0

    그러나 출력은 '中文'이 아니며, 횡설수 조의 무리입니다. –