Python2 hat zwei Zeichenfolgentypen, "str" und "unicode". Normalerweise sollten Sie den Typ "Unicode" verwenden.
Es ist richtig (ich denke), dass str
eher eine Byte-Zeichenfolge als eine Zeichenfolge ist.
aiueo = 'AIUEO'
#Zu diesem Zeitpunkt wird aiueo zum str-Typ
len(aiueo)
#Wie viele davon abhängen, hängt von der Codierung der Datei ab
#Zum Beispiel utf-Wenn es 8 ist, wird es 15 und verschiebt sich_Wenn es jis ist, wird es 10 sein.
Der Typ "Unicode" zeichnet Zeichen als UCS-2 (oder UCS-4) auf. Um Zeichen im UCS-4-Bereich zu verwenden, müssen Sie diese beim Kompilieren von Python angeben.
aiueo = u'AIUEO'
#Zu diesem Zeitpunkt wird aiueo zum Unicode-Typ
len(aiueo)
#Werden Sie 5 in jeder Umgebung
Sie können in einen Unicode-Typ konvertieren, indem Sie die Decode-Methode vom Typ str aufrufen. Wenn Sie dagegen die "encode" -Methode vom Typ "unicode" aufrufen, können Sie sie in den Typ "str" konvertieren.
aiueo = u'AIUEO'
aiueo_utf8 = aiueo.encode('utf-8')
aiueo_shiftjis = aiueo.encode('shift_jis')
print isinstance(aiueo_utf8, str) # True
print isinstance(aiueo_shiftjis, str) # True
print len(aiueo_utf8) # 15
print len(aiueo_shiftjis) # 10
print len(aiueo_utf8.decode('utf-8')) # 5
print len(aiueo_shiftjis.decode('shift_jis')) # 5
Wenn Sie eine falsche Codierung an die "decode" -Methode übergeben, wird ein "UnicodeDecodeError" -Fehler angezeigt.
aiueo_shiftjis.decode('utf-8') #UnicodeDecodeError-Fehler
Python3
Es scheint, dass "str" in "Bytes" und "Unicode" in Python3 in "str" geändert wird, weil es verwirrend ist.