Eine der wichtigsten Verbesserungen von
Python3 besteht darin, die große Lücke zu schließen, die durch String und Zeichenkodierung in Python2 entsteht. Warum ist Python-Codierung so schmerzhaft? Es wurden einige Fehler im Python2-String-Design eingeführt:
- Die Verwendung von ASCII-Code als Standardcodierungsmethode ist für die chinesische Verarbeitung sehr unfreundlich.
- Erzwungene Aufteilung von Zeichenfolgen in zwei Typen, Unicode und Str, führt Entwickler in die Irre
Dies ist natürlich kein Fehler, solange Sie bei der Verarbeitung mehr Aufmerksamkeit schenken, können Sie diese Fallstricke vermeiden. Aber in Python3 werden beide Probleme sehr gut gelöst.
Zunächst setzt Python3 die Systemstandardkodierung auf UTF-8
>>> import sys >>> sys.getdefaultencoding() 'utf-8' >>>
Dann werden Textzeichen und Binärdaten klarer unterschieden, dargestellt durch str bzw. Bytes. Alle Textzeichen werden durch den Typ str dargestellt. str kann alle Zeichen im Unicode--Zeichensatz darstellen, während binäre Bytedaten durch einen neuen -Datentyp dargestellt werden, der durch Bytes dargestellt wird.
str
>>> a = "a" >>> a 'a' >>> type(a) <class 'str'> >>> b = "禅" >>> b '禅' >>> type(b) <class 'str'>
bytes
Fügen Sie in Python3 „b“ vor dem Anführungszeichen ein, um deutlich anzuzeigen, dass es sich um ein Byte-Typ--Objekt<🎜 handelt > Tatsächlich handelt es sich um Daten, die aus einer Reihe binärer Bytesequenzen bestehen. Der Bytetyp kann Zeichen im ASCII-Bereich und andere Zeichendaten in Hexadezimalform sein, er kann jedoch nicht durch Nicht-ASCII-Zeichen wie Chinesisch dargestellt werden.
>>> c = b'a'>>> c b'a'>>> type(c) <class 'bytes'> >>> d = b'\xe7\xa6\x85'>>> d b'\xe7\xa6\x85'>>> type(d) <class 'bytes'> >>> >>> e = b'禅' File "<stdin>", line 1SyntaxError: bytes can only contain ASCII literal characters.
>>> b"a"+b"c" b'ac' >>> b"a"*2 b'aa' >>> b"abcdef\xd6"[1:] b'bcdef\xd6' >>> b"abcdef\xd6"[-1] 214 >>> b"a" + "b" Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: can't concat bytes to str
encode ist für die Konvertierung der Zeichen-zu-Byte-Kodierung verantwortlich. Standardmäßig wird die UTF-8-Kodierung verwendet.
>>> s = "Python之禅" >>> s.encode() b'Python\xe4\xb9\x8b\xe7\xa6\x85' >>> s.encode("gbk") b'Python\xd6\xae\xec\xf8'
Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung der Lösung von Python3 für schwierige Zeichencodierungsprobleme. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!