>백엔드 개발 >파이썬 튜토리얼 >setdefaultencoding 기능을 사용하는 방법에 대한 자세한 소개

setdefaultencoding 기능을 사용하는 방법에 대한 자세한 소개

高洛峰
高洛峰원래의
2017-03-19 15:01:131656검색

sys.getdefaultencoding()은 string의 기본 인코딩 형식을 설정합니다. 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')

여기서 import 문은 실제로 처음이 아니기 때문에 setdefaultencoding을 호출할 때 먼저 sys 모듈을 다시 로드해야 합니다. sys import 문은 이것이 실제로 sys 모듈의 두 번째 또는 세 번째 가져오기일 수 있음을 의미하며 이는 단지 sys에 대한 참조일 뿐이며 다시 로드를 통해서만 다시 로드할 수 있습니다.


그러면 왜 다시 로드해야 하는데 직접 인용하면 함수를 호출할 수 없는 걸까요? setdefaultencoding 함수는 시스템에서 호출된 후 삭제되므로 가져오기를 통해 참조할 때 더 이상 존재하지 않습니다. 따라서 setdefaultencoding을 사용할 수 있고 인터프리터의 현재 문자 인코딩을 사용할 수 있도록 sys 모듈을 한 번 다시 로드해야 합니다. 코드에서 수정되었습니다.


python 설치 디렉토리의 Lib 폴더에 site.py라는 파일이 있는데, main() --> setencoding()-->sys.setdefaultencoding(encoding), 왜냐하면 이 site.py는 Python 인터프리터를 시작할 때마다 자동으로 로드되므로 기본 기능은 실행 후 setdefaultencoding 함수가 나오자마자 삭제되었습니다.


위 내용은 setdefaultencoding 기능을 사용하는 방법에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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