왜 그런지에 대한 정보가 조금 더 있습니다.
>>> s = u'\u2265'
>>> print s
print
UTF-8로 설정된 환경에 자동으로 시스템 인코딩을 사용 하기 때문에 작동합니다 . (을 통해 확인할 수 있습니다 import sys; print sys.stdout.encoding
)
>>> print "{0}".format(s)
format
호출 된 유형의 인코딩과 일치하려고 시도하기 때문에 실패합니다 (이 문서에 대한 문서를 찾을 수는 없지만 이것이 주목 한 동작입니다). 문자열 리터럴은 파이썬 2에서 ASCII로 인코딩 된 바이트 문자열이므로 ASCII format
로 인코딩 s
을 시도하면 예외가 발생합니다. 관찰 :
>>> s = u'\u2265'
>>> s.encode('ascii')
Traceback (most recent call last):
File "<input>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2265' in position 0: ordinal not in range(128)
이것이 기본적으로 이러한 접근 방식이 작동하는 이유입니다.
>>> s = u'\u2265'
>>> print u'{}'.format(s)
≥
>>> print '{}'.format(s.encode('utf-8'))
≥
소스 문자 세트는 인코딩 선언으로 정의됩니다. 소스 파일에 인코딩 선언이없는 경우 ASCII입니다 ( https://docs.python.org/2/reference/lexical_analysis.html#string-literals )
from __future__ import unicode_literals
소스 파일의 시작 부분에 넣으십시오.