Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung der Verwendung der Setdefaultencoding-Funktion

Detaillierte Erläuterung der Verwendung der Setdefaultencoding-Funktion

高洛峰
高洛峰Original
2016-10-17 16:14:411351Durchsuche

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.


Im Lib-Ordner des Python-Installationsverzeichnisses gibt es eine Datei namens site.py, in der Sie main() --> setencoding()-- finden. > sys.setdefaultencoding(encoding), da diese site.py jedes Mal automatisch geladen wird, wenn der Python-Interpreter gestartet wird, sodass die Hauptfunktion jedes Mal ausgeführt wird und die Funktion setdefaultencoding gelöscht wird, sobald sie herauskommt.


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn