>>> print 'абвгд'
абвгд
일부 문자를 입력하면 터미널에서 이러한 문자가 응용 프로그램에 어떻게 표시되는지 결정합니다. 여러분의 터미널은 utf-8, ISO-8859-5 또는 심지어 터미널에서만 이해할 수있는 것으로 인코딩 된 응용 프로그램에 문자를 줄 수도 있습니다. 파이썬은 이러한 문자를 바이트 시퀀스로 가져옵니다. 그런 다음 파이썬은이 바이트를 그대로 출력하고 터미널은 문자를 표시하기 위해 어떤 방법으로 그들을 해석합니다. 그 전에 그들을 인코딩으로 터미널은 일반적으로 바이트 같은 방법으로 해석하기 때문에 당신이 그것을 입력처럼, 모든 것이 표시됩니다.
>>> u'абвгд'
을 여기에 일련의 바이트로 파이썬 인터프리터에 도착 일부 문자를 입력, 터미널에 의해 어떤 식 으로든 인코딩 될 수 있습니다. u
접두어로 파이썬은이 데이터를 유니 코드로 변환하려고 시도합니다. 이것을 정확히하기 위해 파이썬은 터미널이 사용하는 인코딩을 알고 있어야합니다. 귀하의 경우에는 파이썬이 터미널 인코딩을 ASCII로 추측하지만 수신 된 데이터가 일치하지 않으므로 인코딩 오류가 발생합니다.
때문에이이 같은 것입니다 대화 형 세션에서 유니 코드 문자열을 작성하는 정직 방법 : 파일에
>>> us = 'абвгд'.decode('my-terminal-encoding')
당신은 또한 특수 모드 라인을 사용하여 파일의 인코딩을 지정할 수 있습니다
# -*- encoding: ISO-8859-5 -*-
us = u'абвгд'
기본 입력 인코딩을 설정하는 다른 방법은 sys.setdefaultencoding(...)
또는 sys.stdin.encoding
입니다.
출처
2009-05-27 23:12:40
sth
네,이 말은 저에게 많은 의미가 있습니다. – disc0dancer
+1 매우 포괄적 인 대답 –