>  기사  >  백엔드 개발  >  setdefaultencoding 함수 사용에 대한 자세한 설명

setdefaultencoding 함수 사용에 대한 자세한 설명

高洛峰
高洛峰원래의
2016-10-17 16:14:411337검색

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 모듈을 한 번 다시 로드해야 합니다. 코드에서 수정되었습니다.


파이썬 설치 디렉터리의 Lib 폴더에 site.py라는 파일이 있는데, 여기에 main() --> setencoding()--이 있습니다. > sys.setdefaultencoding(encoding), 이 site.py는 파이썬 인터프리터가 시작될 때마다 자동으로 로드되기 때문에 메인 함수는 매번 실행되고, setdefaultencoding 함수는 나오자마자 삭제됩니다.


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.