Home  >  Article  >  Backend Development  >  Detailed introduction to the method of using setdefaultencoding function

Detailed introduction to the method of using setdefaultencoding function

高洛峰
高洛峰Original
2017-03-19 15:01:131590browse

sys.getdefaultencoding() sets the default encoding format of string. If you do not specify the encoding method when encoding and decoding in python, then python will Use defaultencoding.

The default encoding of python2.x is ascii, which is why most python encoding errors: "UnicodeDecodeError: 'ascii' codec can't decode byte...".

# coding:utf-8, which has a similar function, is used to define the encoding of the source code. If it is not defined, the source code cannot contain the Chinese string .

Note: setdefaultencoding will be abandoned after python2.7, so it cannot be used in python3.x


Code example:

#!/usr/bin/env python    
#encoding: utf-8  
import sys   #引用sys模块进来,并不是进行sys的第一次加载  
reload(sys)  #重新加载sys  
sys.setdefaultencoding('utf8')  ##调用setdefaultencoding函数

Can be executed correctly, but the following code will go wrong

#!/usr/bin/env python    
#encoding: utf-8  
import sys     
sys.setdefaultencoding('utf8')

You must reload the sys module first when calling setdefaultencoding, because the import statement here is not actually the first time in sys The import statement means that this may actually be the second or third import of the sys module. This is just a reference to sys and can only be reloaded by reload.


#So why does it need to be reloaded, but the function cannot be called if it is directly referenced? Because the setdefaultencoding function is deleted after being called by the system, it is no longer there when it is referenced through import. Therefore, the sys module must be reloaded once so that setdefaultencoding will be available and the current character encoding of the interpreter can be modified in the code.


In the Lib folder of the python installation directory, there is a file called site.py, in which you can find main() --> setencoding()-->sys.setdefaultencoding(encoding), because this site.py will automatically load every time the python interpreter is started, so the main function will be loaded every time After execution, the setdefaultencoding function has been deleted as soon as it comes out.


The above is the detailed content of Detailed introduction to the method of using setdefaultencoding function. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn