sys.getdefaultencoding() sets the default string encoding format. 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 Chinese strings.
Note: setdefaultencoding will be abandoned after python2.7 , so it cannot be used in python3. Reload the sys module first, because the import statement here is not actually the first import statement of sys, which 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. to reload.
So why does it need to be reloaded, but the function cannot be called by directly referencing it? 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 be automatically loaded every time the python interpreter is started, so the main function will be executed every time, and the setdefaultencoding function will be deleted as soon as it comes out.