Einführung in die Python-Zeichenkodierung
1. Hinweis:
Die python 2
Standardcodierung in ist ASCII
und die python 3
Standardcodierung in istunicode
unicode
Unterteilt in utf-32
(belegt 4 Byte), utf-16
(belegt zwei Bytes), utf-8
(1-4 Byte belegt), so ist es utf-16
das am häufigsten verwendete ist unicode
Version, aber es ist immer noch in der Datei gespeichert sind, utf-8
weil es spart utf8
Platz
In python 3
, encode
während Codierung wird string
geworden bytes
Typ, während Dekodierung dekodiert - bytes
Typ in string
Typ
Denken Sie bei der unicode
Codierung daran, dass 1 chinesisches Zeichen = 2 Byte, 1 englisches Zeichen = 1 Byte: ASCII kann keine chinesischen Zeichen speichern
utf-8
Es handelt sich um eine Zeichencodierung mit variabler Länge, die unicode
optimiert ist, alle englischen Zeichen sind noch in ASCII
Form gespeichert und alle chinesischen Zeichen haben einheitlich 3 Byte
unicode
Enthält die Zeichencodes aller Länder, und die Konvertierung zwischen verschiedenen Zeichencodes erfordert unicode
einen Prozess
python
Die Standardcodierung selbst istutf-8
2. py2
Der Codierungs- und Transcodierungsprozess in
Wie gezeigt:
Hinweis: Da es sich unicode
um eine Zwischencodierung handelt, muss jede Konvertierung vor der Zeichencodierung in Unicode decodiert und dann in die zu konvertierende Zeichencodierung codiert werden
Zwei, Zeichencodierungskonvertierung
1. Konvertierung der py2-Zeichenkodierung
Code wie folgt anzeigen:
#! /usr/bin/env python
# -*- coding:utf-8 -*-
# __auther__ == luoahong
s = "我是学员"
#utf-8解码成unicode编码
s_to_unicode = s.decode("utf-8")
print("--------s_to_unicode-----")
print(s_to_unicode)
#然后unicode再编码成gbk
s_to_gbk = s_to_unicode.encode("gbk")
print("-----s_to_gbk------")
print(s_to_gbk)
#gbk解码成unicode再编码成utf-8
gbk_to_utf8 = s_to_gbk.decode("gbk").encode("utf-8")
print("------gbk_to_utf8-----")
print(gbk_to_utf8)
#Ausgabe
--------s_to_unicode-----
我是学员
-----s_to_gbk------
�����˧
------gbk_to_utf8-----
我是学员
Hinweis: Im obigen Fall ist das geeignete Zeichen eine Nicht-Unicode-Codierung. Abonnieren Sie dies bitte. Was ist, wenn die Zeichencodierung bereits Unicode ist?
2. Wenn die Zeichenkodierung bereits Unicode ist
Code wie folgt anzeigen:
#! /usr/bin/env python
# -*- coding:utf-8 -*-
# __auther__ == luoahong
#u代码字符编码是unicode
s = u'你好'
#已经是unicode,所以这边直接是编码成gbk
s_to_gbk = s.encode("gbk")
print("----s_to_gbk----")
print(s_to_gbk)
#这边再解码成unicode然后再编码成utf-8
gbk_to_utf8 = s_to_gbk.decode("gbk").encode("utf-8")
print("-----gbk_to_utf8---")
print(gbk_to_utf8)
#Ausgabe
----s_to_gbk----
���
-----gbk_to_utf8---
你好
Hinweis: Wenn python2``中,在文件的开头指定字符编码,是要告诉解释器我现在的字符编码使用的是utf-8
ich utf-8
chinesische Schriftzeichen drucke und chinesische Schriftzeichen darin enthalten sind, kann es gedruckt werden. Wenn Sie die Zeichencodierung nicht angeben, wird standardmäßig die Systemcodierung verwendet. Wenn Ihre Systemcodierung aktiviert ist ASCII
, wird ein Fehler gemeldet, da ASCII
chinesische Zeichen nicht gespeichert werden können.
3. Zeichenkodierungskonvertierung von py3
In den Anweisungen wurde die Codierung von Python 3 erwähnt. Die Standardeinstellung ist Unicode. Für die Konvertierung zwischen Zeichencodierungen ist also kein Decodierungsprozess erforderlich. Codieren Sie einfach direkt. Der Code lautet wie folgt:
#! /usr/bin/env python
# __auther__ == luoahong
#无需声明字符编码,当然你声明也不会报错
s = '你好'
# 字符串s已经是unicode编码,无需decode,直接encode s_to_gbk = s.encode("gbk")
print("----s_to_gbk----")
print(s_to_gbk)
#这边还是一样,gbk需要先解码成unicode,再编码成utf-8 gbk_to_utf8 = s_to_gbk.decode("gbk").encode("utf-8") print("-----gbk_to_utf8---")
print(gbk_to_utf8)
#解码成unicode字符编码
utf8_decode = gbk_to_utf8.decode("utf-8")
print("-------utf8_decode----")
print(utf8_decode)
#Ausgabe
----s_to_gbk----
b'\xc4\xe3\xba\xc3'
-----gbk_to_utf8---
b'\xe4\xbd\xa0\xe5\xa5\xbd'
-------utf8_decode----
你好
Hinweis: In python 3
, encode
während Codierung wird string
ein worden bytes
Typ, decode
während Willen Decodierung bytes
Typ a wird string
Typ, so kann man leicht sehen , encode
nachdem es eine gewordene bytes
Art von Daten. Achten Sie auch besonders darauf: Unabhängig davon, ob die python 3
Zeichenkodierung am Anfang der Datei deklariert ist, kann nur angegeben werden, dass es sich bei der Python-Datei um die Zeichenkodierung handelt und die Zeichenfolge in der Datei weiterhin Unicode ist, wie im Folgenden gezeigt Zahl:
3. Zusammenfassung:
1 、uniocode
uniocode
Kann alle Zeichencodierungszeichenfolgen erkennen
2 、python 2
Die Konvertierung zwischen Zeichencodierungen muss unicode
vor der Konvertierung durchgeführt werden. Sie können sie also beim Drucken verwenden unicode
oder die entsprechende Zeichencodierung (geben Sie die Codierung am Anfang der Datei an) verwenden, um Zeichen oder Zeichenfolgen zu drucken, da kein offensichtliches Zeichen und vorhanden ist Byte in py2 Unterscheiden, so dass es zu einem solchen Ergebnis führt.
3,python 3
Nur durch Unicode
Erkennen der Zeichen wird es, wenn es in das entsprechende Codierungsformat konvertiert wird, direkt zum bytes
Bytecode des entsprechenden Codierungstyps , dh binär. Es muss erkannt und decodiert werden, Unicode
um erkannt zu werden.