Heim >Backend-Entwicklung >Python-Tutorial >Detaillierte Erläuterung der Verwendung der Setdefaultencoding-Funktion
sys.getdefaultencoding() legt das Standardformat für die Zeichenfolgenkodierung fest. Wenn Sie beim Kodieren und Dekodieren in Python keine Kodierungsmethode angeben, verwendet Python die Standardkodierung.
Die Standardkodierung von python2.x ist ASCII, weshalb die meisten Python-Kodierungsfehler auftreten: „UnicodeDecodeError: ‚ASCII‘-Codec kann Byte nicht dekodieren ...“.
# programming:utf-8, das eine ähnliche Funktion hat, wird verwendet, um die Codierung des Quellcodes zu definieren. Wenn es nicht definiert ist, kann der Quellcode keine chinesischen Zeichenfolgen enthalten Hinweis: setdefaultencoding wurde seit Python2.7 aufgegeben und kann daher nicht in Python3.x verwendet werden
Codebeispiel:
#!/usr/bin/env python #encoding: utf-8 import sys #引用sys模块进来,并不是进行sys的第一次加载 reload(sys) #重新加载sys sys.setdefaultencoding('utf8') ##调用setdefaultencoding函数
kann korrekt ausgeführt werden, aber der folgende Code geht schief
#!/usr/bin/env python #encoding: utf-8 import sys sys.setdefaultencoding('utf8')
Sie müssen sys zuerst neu laden, bevor Sie das Setdefaultencoding-Modul aufrufen, da der Import Die Anweisung hier ist nicht die erste Importanweisung von sys, was bedeutet, dass es sich tatsächlich um den zweiten oder dritten Import des sys-Moduls handelt. Dies ist nur ein Verweis auf sys und kann nur durch reload neu geladen werden.
Warum muss es also neu geladen werden, aber die Funktion kann nicht aufgerufen werden, wenn sie direkt in Anführungszeichen gesetzt ist? Da die Funktion setdefaultencoding nach dem Aufruf durch das System gelöscht wird, ist sie nicht mehr vorhanden, wenn sie durch den Import referenziert wird. Daher muss das sys-Modul einmal neu geladen werden, damit setdefaultencoding verfügbar ist und die aktuelle Zeichenkodierung des Interpreters verfügbar ist im Code geändert.