English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Methode zur Einstellung der Dateikodierung in Python

Wenn man in python2Dateien mit chinesischen Zeichen im .py-Datei, müssen eine Zeile zur Angabe der Dateiencodierung hinzugefügt werden, andernfalls python2verwendet standardmäßig ASCII-Codierung. (python3Dieses Problem gibt es nicht mehr, python3Die Standarddateiencodierung ist UTF-8)

Die Anmerkung zur Encodierung muss in der ersten oder zweiten Zeile stehen. In der Regel sollten die ersten beiden Zeilen einer Python-Datei so aussehen:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

Das erste Zeile bezieht sich auf die Angabe des Python-Interpreteurs, das zweite Zeile bezieht sich auf die Angabe der Python-Dateiencodierung. Es gibt folgende Methoden zur Einstellung der Encodierung:

1. Die Einstellung mit dem Gleichheitszeichen:

#!/usr/bin/python
# coding=<encoding name>

2. Am häufigsten, mit dem Doppelpunkt (von den meisten Editoren korrekt erkannt):

#!/usr/bin/python
# -*- coding: <encoding name> -*-

3. vim:

#!/usr/bin/python
# vim: set fileencoding=<encoding name> :

Die Einstellung der Header-Encodingserklärung hat folgende Funktionen:

Wenn im Code chinesische Kommentare vorhanden sind, ist diese Angabe erforderlich

Fortgeschrittene Editoren (wie mein emacs) erkennen die Header-Angabe und verwenden sie als Format der Quelldatei.

Das Programm decodiert initial den Unicode-Objekt "人生苦短" durch Header-Angabe,

Default Decoding Format

import sys  # sys-Modul einbinden, nicht das erste Laden von sys 
reload(sys) # Neuladen von sys 
sys.setdefaultencoding('utf8`) # Aufruf von setdefaultencoding

Besonders zu beachten ist hier das reload(sys) in der zweiten Zeile. Dies darf nicht fehlen. Fehlt es, dann läuft der Code nicht korrekt. Warum muss neu geladen werden, und warum kann die Funktion nicht direkt referenziert werden? Weil die Funktion setdefaultencoding nach der Verwendung durch das System gelöscht wird. Daher ist ein erneutes Laden des Moduls sys erforderlich, damit setdefaultencoding verfügbar ist und im Code die aktuelle Zeichencodierung des Interprets geändert werden kann.

Unterhalb des Verzeichnisses Lib im Installationsverzeichnis von Python gibt es eine Datei namens site.py, in der sich main() –> setencoding() –> sys.setdefaultencoding(encoding) finden lässt. Da diese site.py jedes Mal automatisch beim Start des Python-Interprets geladen wird, wird die main-Funktion jedes Mal ausgeführt. Die Funktion setdefaultencoding wird bereits gelöscht, bevor die main-Funktion ausgeführt wird. Daher muss sys jedes Mal neu geladen werden, damit setdefaultencoding verfügbar ist und im Code die aktuelle Zeichencodierung des Interprets geändert werden kann.

Über sys.defaultencoding: Dies wird verwendet, wenn keine Decodierungsmethode explizit angegeben wird. Zum Beispiel habe ich folgenden Code:

#! /usr/bin/env python 
# -*- coding: utf-8 -*- 
s = '中文' # Beachten Sie, dass hier str vom Typ str ist, nicht von unicode 
s.encode('gb18030') 

Dieser Code encodiert s neu in gb18030 Format, d.h. Unicode -> str um. Da s selbst bereits vom Typ str ist,

Python decodiert s automatisch in unicode und encodiert ihn dann in gb18030. Da Decodierung erfolgt automatisch durch Python, ohne dass wir eine Decodierungsmethode angeben, wird Python die Methode verwenden, die durch sys.defaultencoding angegeben wird. In vielen Fällen ist sys.defaultencoding

ANSCII, wenn s nicht dieser Typ ist, wird ein Fehler aufgetreten. Nehmen wir den obigen Fall als Beispiel, mein sys.defaultencoding ist anscii, und die Kodierung von s stimmt mit der Kodierung der Datei überein, ist utf8 d, daher ist ein Fehler aufgetreten:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 
0: ordinal not in range(128) 

Für diesen Fall gibt es zwei Methoden, um den Fehler zu korrigieren:

Erstens wird die Kodierungswahl von s klar angegeben

#! /usr/bin/env python 
# -*- coding: utf-8 -*- 
s = '中文' 
s.decode('utf-8).encode('gb18030') 

Zweitens ändern wir sys.defaultencoding in die Zeichensatzkodierung der Datei

#! /usr/bin/env python 
# -*- coding: utf-8 -*- 
import sys 
reload(sys) # Python2.5 Nach der Initialisierung wird die Methode sys.setdefaultencoding gelöscht, wir müssen sie neu laden 
sys.setdefaultencoding('utf-8) 
str = '中文' 
str.encode('gb18030')

Diese Implementierungsmethode für die Einstellung der Zeichensatzkodierung von Python, die ich Ihnen alle mitgeteilt habe, ist das gesamte Inhalt, den ich Ihnen mitgeteilt habe. Ich hoffe, es kann Ihnen als Referenz dienen und hoffe, dass alle mehr Unterstützung für das Anrufungs-Lehrbuch geben.

Erklärung: Der Inhalt dieses Artikels wurde aus dem Internet übernommen und gehört dem Urheberrechtsinhaber. Der Inhalt wurde von Internetbenutzern freiwillig beigesteuert und hochgeladen. Diese Website besitzt keine Eigentumsrechte und hat den Inhalt nicht manuell bearbeitet. Sie übernimmt auch keine rechtlichen Verantwortlichkeiten. Wenn Sie Inhalte finden, die möglicherweise urheberrechtlich geschützt sind, freuen wir uns über eine E-Mail an: notice#oldtoolbag.com (Bitte ersetzen Sie # durch @ beim Senden einer E-Mail zur Meldung von Missbrauch und stellen Sie relevante Beweise zur Verfügung. Sobald nachgewiesen wird, dass die Inhalte urheberrechtlich geschützt sind, wird diese Website die betreffenden urheberrechtlich geschützten Inhalte sofort löschen.)

Dir mag das gefallen