Einführung in die Python-Zeichenkodierung

Einführung in die Python-Zeichenkodierung

1. Hinweis:

Die python 2Standardcodierung in ist ASCIIund die python 3Standardcodierung in istunicode

unicodeUnterteilt in utf-32(belegt 4 Byte), utf-16(belegt zwei Bytes), utf-8(1-4 Byte belegt), so ist es utf-16das am häufigsten verwendete ist unicodeVersion, aber es ist immer noch in der Datei gespeichert sind, utf-8weil es spart utf8Platz

In python 3, encodewährend Codierung wird stringgeworden bytesTyp, während Dekodierung dekodiert - bytesTyp in stringTyp

Denken Sie bei der unicodeCodierung daran, dass 1 chinesisches Zeichen = 2 Byte, 1 englisches Zeichen = 1 Byte: ASCII kann keine chinesischen Zeichen speichern

utf-8Es handelt sich um eine Zeichencodierung mit variabler Länge, die unicodeoptimiert ist, alle englischen Zeichen sind noch in ASCIIForm gespeichert und alle chinesischen Zeichen haben einheitlich 3 Byte

unicodeEnthält die Zeichencodes aller Länder, und die Konvertierung zwischen verschiedenen Zeichencodes erfordert unicodeeinen Prozess

pythonDie Standardcodierung selbst istutf-8

2. py2Der Codierungs- und Transcodierungsprozess in

Wie gezeigt:

Fügen Sie hier eine Bildbeschreibung ein
Hinweis: Da es sich unicodeum 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-8ich utf-8chinesische 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 ASCIIchinesische 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, encodewährend Codierung wird stringein worden bytesTyp, decodewährend Willen Decodierung bytesTyp a wird stringTyp, so kann man leicht sehen , encodenachdem es eine gewordene bytesArt von Daten. Achten Sie auch besonders darauf: Unabhängig davon, ob die python 3Zeichenkodierung 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

uniocodeKann alle Zeichencodierungszeichenfolgen erkennen

2 、python 2

Die Konvertierung zwischen Zeichencodierungen muss unicodevor der Konvertierung durchgeführt werden. Sie können sie also beim Drucken verwenden unicodeoder 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 UnicodeErkennen der Zeichen wird es, wenn es in das entsprechende Codierungsformat konvertiert wird, direkt zum bytesBytecode des entsprechenden Codierungstyps , dh binär. Es muss erkannt und decodiert werden, Unicodeum erkannt zu werden.

Ich denke du magst

Origin blog.csdn.net/qq_25562325/article/details/111408324
Empfohlen
Rangfolge