Gut für den Datenaustausch mit der Außenwelt. Die folgenden zwei Mittel sind erforderlich.
#String codieren()Das erste Argument der Funktion ist der Codierungsname.
#Unicode-Zeichenfolge"\u2603"Ersatz
>>> snowman="\u2603"
>>> len(snowman)
1
#Codieren Sie dieses Unicode-Zeichen in eine Bytefolge.
>>> ds=snowman.encode("utf-8")
>>> len(ds)
3
>>> ds
b'\xe2\x98\x83'
#Ein Fehler tritt auf, es sei denn, das Unicode-Zeichen ist auch ein gültiges ASCII-Zeichen.
>>> ds=snowman.encode("ascii")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can not encode character '\u2603' in position 0: ordinal not in range(128)
#encode()Die Funktion hat ein zweites Argument, um die Wahrscheinlichkeit einer Codierungsausnahme zu verringern. Der Standardwert funktioniert wie zuvor"strict"Wenn also ein anderes Zeichen als ASCII verwendet wird, tritt UnicodeEncodeError auf.
#Verwerfen Sie nicht codierte Elemente, indem Sie Ignorieren angeben
>>> snowman.encode("ascii","ignore")
b``
#Zeichen, die nicht durch Ersetzen codiert werden können?Ersetzen mit
>>> snowman.encode("ascii","replace")
b`?`
#unicode-Generieren Sie eine Python-Unicode-Zeichenfolge im Escape-Format.
>>> snowman.encode("ascii","backslashreplace")
b`\\u2603`
#Generieren Sie eine Zeichenfolge von Entitäten, die auf Webseiten verwendet werden können.
>>> snowman.encode("ascii","xmlcharrefreplace")
b`☃`
#Wert`café`Erstellen Sie eine Unicode-Zeichenfolge für
>>> place = "caf\u00e9"
>>> place
`café`
>>> type(place)
<class `str`>
#UTF-In 8 Formaten codieren und platzieren_Weisen Sie der Byte-Variablen zu.
>>> place_bytes=place.encode("utf-8")
#place_Beachten Sie, dass Bytes 5 Bytes sind
#Die ersten 3 Bytes entsprechen ASCII(UTF-8 Vorteile)Jedes Zeichen wird mit 1 Byte codiert, und das letzte é wird mit 2 Bytes codiert.
>>> place_bytes
b`caf\xc3\xa9`
>>> type(place_bytes)
<class `bytes`>
>>> place2=place_bytes.decode("utf-8")
>>> place2
`café`
#Der ASCII-Decoder gibt einen Fehler zurück, da der Bytewert 0xc3 in ASCII ungültig ist.
>>> place3=place_bytes.decode("ascii")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: `ascii` codec can`t decode byte 0xc3 in position 3: ordinal not in range(128)
#UTF so viel wie möglich-Es ist vorzuziehen, 8 Codierungen zu verwenden.
>>> place4=place_bytes.decode("latin-1")
>>> place4
`café`
>>> place5=place_bytes.decode("windows-1252")
>>> place5
`café`
Beispiel: Inhalt der JPG-Datei (Bytezeichen)
FFD8FFE0 00104A46 49460001 0101004B 004B0000 FFFE0094 56542D43 6F6D7072 65737320 28746D29 2058696E 67205465 63686E6F 6C6F6779 20436F72 702E0000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 0000FFDB 00840010 0B0C0E0C 0A100E0D 0E121110 131828
Als ich Kapitel 7 ausprobierte, wurde es zu einer Geschichte von Daten, und Binärzahlen, Hexadezimalzahlen, Verschränkungen mit Bytes usw. kamen sofort heraus. Ich habe als Student studiert, aber ich habe es vergessen, deshalb werde ich es in diesem Kapitel nach und nach wiederholen.
"Einführung in Python3 von Bill Lubanovic (veröffentlicht von O'Reilly Japan)"
Referenz-URL http://zaq.g1.xrea.com/2sinsuu5.htm https://docs.python.org/ja/3/howto/unicode.html
Recommended Posts