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 has been abandoned since python2.7, so it cannot be used in python3. ##When calling setdefaultencoding, you must first reload the sys module, 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. Here is just A reference to sys 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 is automatically loaded every time the python interpreter is started, the main function will be executed every time, and the setdefaultencoding function has been deleted as soon as it comes out.
The above is the detailed content of Detailed explanation of the usage of function setdefaultencoding. For more information, please follow other related articles on the PHP Chinese website!