2013-03-02 2 views
1

파이썬 2.7에서는 유니 코드와 다양한 인코딩/디코딩에 대해 많이 읽었지만 IDLE이 올바른 문자열을 인쇄 할 수없는 이유를 이해하는 데 여전히 문제가 있습니다.파이썬 2.7 유니 코드/IDLE 혼동

내가 유니 코드 문자열이 : 나는 UTF-8로 인코딩 한 후, 그러나

>>> s = u"Hey I\u2019m Bob" 
>>> print s 
Hey I'm Bob 

를, 내가 얻을 :이 인쇄 할 수없는 이유

>>> s.encode('utf-8') 
'Hey I\xe2\x80\x99m Bob' 
>>> print s.encode('utf-8') 
Hey I’m Bob 

나는 알아낼 수 없습니다 올바르게,하지만 텍스트 파일에 s.encode ('utf-8')를 쓸 수 있으며 올바르게 출력됩니다. 이것이 IDLE과 관련이 있는지 확실하지 않은가요?

답변

1

IDLE의 출력 창이 UTF-8을 지원하지 않기 때문에 유니 코드 문자열을 인쇄하면 문자열이 stdout 인코딩으로 자동 인코딩됩니다. IDLE 콘솔의 다음 내용은 다음과 같습니다.

>>> s = u"Hey I\u2019m Bob" 
>>> print s 
Hey I’m Bob 
>>> print s.encode('utf8') 
Hey I’m Bob 
>>> import sys 
>>> sys.stdout.encoding 
'cp1252' 
>>> print s.encode('cp1252') 
Hey I’m Bob 
+0

감사합니다. IDLE이 UTF-8을 지원할 수있는 방법이 있습니까? – rottentomato56

+0

확실하지 않습니다. 필자는 UTF-8을 지원하는 [pywin32] (http://sourceforge.net/projects/pywin32/files/pywin32/) 확장자의 PythonWin을 사용합니다. –

+0

IDLE에서 유니 코드 문자열을 인쇄하는 경우 stdout 인코딩이 'cp1252' (중국어를 지원하지 않는 인코딩) 임에도 불구하고 중국어를 올바르게 인쇄 할 수있었습니다. 인코딩없이 유니 코드 문자열 만 출력하면됩니다. –