Heim  >  Artikel  >  Backend-Entwicklung  >  Python-Grundlagen – Zeichenkodierung lernen

Python-Grundlagen – Zeichenkodierung lernen

零下一度
零下一度Original
2017-06-25 10:18:511081Durchsuche

Vorwort

Es kann sehr leicht zu Problemen mit der Zeichenkodierung kommen. Wir sollten ein paar Worte im Hinterkopf behalten:

1. Welche Kodierung zum Speichern verwendet wird, sollte mit geöffnet werden gleiche Kodierung

2. Die Ausführung des Programms besteht darin, zunächst die Datei in den Speicher einzulesen

3. Unicode ist die übergeordnete Kodierung und kann nur in andere Kodierungsformate kodiert und dekodiert werden

utf-8, GBK, dies sind Sub-8-Kodierung kann nur in Unicode dekodiert werden

1. Was ist Zeichenkodierung

Wir wissen, dass Computer nur Binärdateien erkennen können, und das Codes, die wir normalerweise schreiben, müssen in Binärdateien umgewandelt werden, damit sie vom Computer erkannt werden. Wie konvertieren wir also die von uns geschriebenen Zeichen in Binärzeichen? Dieser Prozess verwendet tatsächlich einen Standard, um sicherzustellen, dass die von uns geschriebenen Zeichen eins zu eins bestimmten Zahlen entsprechen.

Zeichen ------ (Zeichenkodierung) -------> Zahlen

2. Entwicklungsgeschichte der Zeichenkodierung

 1.ASCII-Code

 Computer haben ihren Ursprung in den Vereinigten Staaten, und auch die Zeichenkodierung hat ihren Ursprung in den Vereinigten Staaten. Aber die vom amerikanischen Volk verwendeten Zeichen bestehen nur aus 26 Buchstaben und einigen Sonderzeichen. Anders als in China müssen Grundschüler Tausende chinesischer Schriftzeichen kennen. Daher verwenden die Amerikaner den ASCII-Code (American Standard Code for Information Interchange) als Zeichenkodierung. Ein Byte entspricht 2 hoch 8 Bit, was 256 verschiedene Änderungen entspricht Es wurden Bits verwendet, also 127 Zeichen, was für die Menschen in den Vereinigten Staaten ausreicht (natürlich aus Kostengründen). Später wurde Latein an der 8. Stelle kompiliert. Zu diesem Zeitpunkt sind die ASCII-Codes vollständig und englischsprachige Länder und lateinische Länder können problemlos spielen. 2. GBK: 1980 gab die State Administration of Standards die in Chinesisch -> GBK verwendete Zeichenkodierung heraus, die zwei Bytes zur Darstellung eines chinesischen Zeichens verwendet, sodass es 2 hoch 16 oder 65536 Kombinationen gibt, was ausreicht für chinesische Schriftzeichen.

Gleichzeitig haben auch andere Länder ihre eigenen nationalen Zeichenkodierungsstandards veröffentlicht, wie z. B. Shift_JIS aus Japan, Euc-kr aus Südkorea usw.

3.Unicode

Es wird gesagt, dass es in ihrer Blütezeit Hunderte von Zeichenkodierungen gab und sie sich nicht gegenseitig unterstützten. Es scheint, dass die Menschen in allen Ländern eine hatten Viel Rückgrat, aber das ist nicht förderlich für die Interoperabilität, also entstand Unicode. Im Jahr 1994 veröffentlichte die Internationale Organisation für Normung Unicode, bekannt als Universal Code, der zwei Bytes zur Darstellung eines Zeichens verwendet und 65.536 Kombinationen aufweist, was bereits die meisten Sprachen der Welt abdecken kann.

 4.utf-8

Obwohl Unicode gut ist, gibt es ein Problem, das jetzt in einem Byte ausgedrückt werden kann Wenn Sie zwei Bytes verwenden, wird der Speicherplatz verdoppelt. Dies ist offensichtlich nicht perfekt, daher wurde UTF-8 erstellt, das nur 1 Byte für englische Zeichen und 3 Bytes für chinesische Zeichen verwendet.

5. Alle Unicode-Zeichen bestehen aus zwei Bytes, was einfach und grob ist. Die Umwandlung von Zeichen in Zahlen ist schnell, nimmt aber viel Speicherplatz in Anspruch

UTF-8 verwendet unterschiedliche Längen, um unterschiedliche Zeichen darzustellen, was Platz spart, aber die Konvertierungseffizienz ist nicht so schnell wie Unicode

Die im Speicher verwendete Zeichenkodierung ist Unicode, und der Speicher soll schneller werden. Ja, daher würde ich lieber etwas Platz opfern, um die Geschwindigkeit sicherzustellen

  Die Festplatte und die Netzwerkübertragung verwenden UTF-8, da die Festplatte I /O oder Netzwerk-E/A-Verzögerung ist viel größer als die UTF-8-Konvertierungseffizienz, und bei der Netzwerkübertragung sollte so viel Bandbreite wie möglich eingespart werden

3. Ausführung des Python-Interpreters Die erste Stufe: Der Python-Interpreter startet, was ganz schön ist. Yu hat einen Texteditor gestartet

Die zweite Stufe: Der Python-Interpreter dient als Texteditor, um die t.py-Datei zu öffnen und den Inhalt des t zu lesen. py-Datei von der Festplatte in den Speicher Die dritte Stufe: Der Python-Interpreter interpretiert und führt den gerade in den Speicher geladenen Code von t.py aus

Im In der zweiten Phase verfügt die t.py-Datei beim Speichern über eine Zeichenkodierung. Wenn der Python-Interpreter die Datei öffnet, muss dieselbe Kodierungsmethode angegeben werden (die Standardkodierungsmethode von Python2 ist ASCII und die Standardkodierungsmethode von Python3 ist utf). -8). Wenn sich das Kodierungsformat der gespeicherten Datei von der Standardkodierungsmethode des Python-Interpreters unterscheidet, müssen Sie einfach #coding: am Anfang der Datei schreiben, um den Python-Interpreter anzuweisen, seine Standardkodierungsmethode nicht zu verwenden zu lesen, sondern die in der Header-Datei angegebene Methode zum Lesen der Datei zu verwenden, damit keine Fehler auftreten.

 

Die dritte Stufe: Lesen Sie den in den Speicher geladenen Code (standardmäßig Unicode) und führen Sie ihn dann aus. Wenn während der Ausführung ein Vorgang wie das Definieren einer Variablen auftritt, wird ein neuer Speicherbereich geöffnet die Erinnerung. Bitte beachten Sie zu diesem Zeitpunkt, dass der neu geöffnete Speicherplatz nicht unbedingt Unicode ist. Der Benutzer kann beim Definieren der Variablen die Codierungsmethode angeben. Der während der Definition geöffnete Speicherplatz ist nur ein Leerzeichen und kann Codes in einem beliebigen Codierungsformat speichern. Nehmen Sie Python3 als Beispiel

 

 

4. Beim Speichern von Dateien handelt es sich um das Speichern von Dateien Speicher Zur Festplatte

Beim Lesen von Dateien werden die Dateien von der Festplatte in den Speicher gelesen

 

Unicode ist die übergeordnete Codierung, utf-8, GBK sind die untergeordneten Kodierungen. Wenn der Subcode in andere Codes konvertiert werden soll, muss er zuerst in den übergeordneten Code und dann vom übergeordneten Code in andere Subcodes konvertiert werden.

Dekodierung ist Dekodierung Prozess der Konvertierung des Subcodes in den übergeordneten Code Unicode

Codierung ist Codierung, also der Prozess der Konvertierung von Unicode in andere Codierungen

Wie bereits erwähnt, wird eine Datei, wenn sie in den Speicher eingelesen wird Unicode-Codierung (natürlich ist dies die Standardeinstellung und kann auch gemäß den Anweisungen geändert werden). Der Vorgang des Lesens von Dateien von der Festplatte besteht darin, utf-8 auf der Festplatte in Unicode zu dekodieren

Beim Speichern Bei der Datei handelt es sich um den Vorgang des Speicherns aus dem Speicher auf der Festplatte. Die Festplatte ist in utf-8 codiert und muss von Unicode in utf-8 codiert werden.

5. Der Unterschied zwischen Python2 und Python3

1. Die Standardkodierungsmethode von Python2 ist ASCII. Beim Öffnen einer in utf-8 gespeicherten Datei wird ein Fehler gemeldet. Sie sollten sie zur Header-Datei hinzufügen

str in Python2 wird als Bytes erkannt, daher ist str in Python2 das Ergebnis der Codierung. Tatsächlich wird standardmäßig ein u vor der Konvertierung in Unicode hinzugefügt. In Bytes kodieren

Es gibt zwei String-Typen in Python2, str und Unicode str kann durch Hinzufügen eines „u“ davor in Unicode konvertiert werden

2. Die Standardkodierung von Python 3 ist utf-8, Sie können mit utf-8 gespeicherte Dateien direkt öffnen

str in Python3 wird als Unicode erkannt

Es gibt auch zwei String-Typen in Python3 (Bytes und str), Bytes jedoch Bytes, str ist Unicode

 

6. Auf das Terminal drucken

Zunächst müssen Sie wissen, dass die Standardeinstellung des Windows-Terminals The Kodierungsmethode ist GBK

Das Terminal ist auch eine Anwendung und läuft im Speicher, sodass der Druckvorgang mit print() von Speicher zu Speicher erfolgt. Für Unicode tritt also unabhängig von der Druckmethode kein Fehler auf. In Python2 sind die anderen Zeichenfolgen jedoch Bytes. Derzeit verwendet das Terminal die GBK-Codierung, während Python2 die Codierung verwendet Wenn Sie UTF-8 oder den Standard-ASCII-Code angegeben haben, tritt beim Drucken im Terminal ein Fehler auf.

Dies sind meine aktuellen Erkenntnisse. Sollten mir in Zukunft Fehler oder unklare Ausdrücke auffallen, werde ich diese überarbeiten. Leider ist die Zeichenkodierung eine Falle

Das obige ist der detaillierte Inhalt vonPython-Grundlagen – Zeichenkodierung lernen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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
Vorheriger Artikel:Python-Lernsocket ---sshNächster Artikel:Python-Lernsocket ---ssh