sys.getdefaultencoding()은 기본 문자열 인코딩 형식을 설정합니다. Python에서 인코딩 및 디코딩할 때 인코딩 방법을 지정하지 않으면 Python은 defaultencoding을 사용합니다.
python2.x의 기본 인코딩은 ascii입니다. 이것이 대부분의 Python 인코딩 오류가 발생하는 이유입니다: "UnicodeDecodeError: 'ascii' 코덱이 바이트를 디코딩할 수 없습니다...".
#coding:utf-8은 소스 코드의 인코딩을 정의하는 데 사용됩니다. 정의하지 않으면 소스 코드에 중국어 문자열이 포함될 수 없습니다. 참고: setdefaultencoding은 python2.7부터 중단되었으므로 python3.x에서 사용할 수 없습니다.
코드 예:
#!/usr/bin/env python #encoding: utf-8 import sys #引用sys模块进来,并不是进行sys的第一次加载 reload(sys) #重新加载sys sys.setdefaultencoding('utf8') ##调用setdefaultencoding函数
은 올바르게 실행될 수 있지만 다음 코드는 잘못됩니다.
#!/usr/bin/env python #encoding: utf-8 import sys sys.setdefaultencoding('utf8')
setdefaultencoding 모듈을 호출하기 전에 먼저 sys를 다시 로드해야 합니다. 여기서 문은 실제로 sys의 첫 번째 import 문이 아닙니다. 즉, 이는 실제로 sys 모듈의 두 번째 또는 세 번째 가져오기일 수 있으며 reload로만 다시 로드할 수 있습니다.
그러면 왜 다시 로드해야 하는데 직접 인용하면 함수를 호출할 수 없는 걸까요? setdefaultencoding 함수는 시스템에서 호출된 후 삭제되므로 가져오기를 통해 참조할 때 더 이상 존재하지 않습니다. 따라서 setdefaultencoding을 사용할 수 있고 인터프리터의 현재 문자 인코딩을 사용할 수 있도록 sys 모듈을 한 번 다시 로드해야 합니다. 코드에서 수정되었습니다.