파이썬 프로그램의 출력을 파이핑 할 때, 파이썬 인터프리터는 인코딩에 대해 혼란스러워서 None으로 설정합니다. 이것은 다음과 같은 프로그램을 의미합니다 :
# -*- coding: utf-8 -*-
print u"åäö"
정상적으로 실행되면 정상적으로 작동하지만 다음과 같이 실패합니다.
UnicodeEncodeError : 'ascii'코덱은 위치 0에서 문자 u '\ xa0'을 인코딩 할 수 없습니다. 서 수가 범위 내에 있지 않습니다 (128)
파이프 시퀀스에서 사용될 때.
배관 할 때이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 쉘 / 파일 시스템 / 사용중인 인코딩을 무엇이든 사용하도록 지시 할 수 있습니까?
지금까지 내가 본 제안은 site.py를 직접 수정 하거나이 핵을 사용하여 기본 인코딩을 하드 코딩하는 것입니다.
# -*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
print u"åäö"
배관 작업을하는 더 좋은 방법이 있습니까?
chcp 65001
스크립트를 실행 하기 전에 실행할 수도 있습니다 . 여기에는 문제가있을 수 있지만 종종 도움이되며 입력을 많이 필요로하지 않습니다 (미만 set PYTHONIOENCODING=utf_8
).
setx PYTHONENCODING utf-8
입력을 저장하려는 경우가 영구적으로.