Python2 a deux types de chaînes, str
et ʻunicode. Normalement, vous devriez utiliser le type ʻunicode
.
Il est correct (je pense) que «str» est une chaîne d'octets plutôt qu'une chaîne de caractères.
aiueo = 'AIUEO'
#A ce moment, aiueo devient de type str
len(aiueo)
#Combien dépendra de l'encodage du fichier
#Par exemple, utf-S'il est 8, il devient 15 et change_Si c'est jis, ce sera 10.
Le type ʻunicode` enregistre le caractère comme UCS-2 (ou UCS-4). Pour utiliser des caractères de la plage UCS-4, vous devez le spécifier lors de la compilation de Python.
aiueo = u'AIUEO'
#A ce moment, aiueo devient de type unicode
len(aiueo)
#Devenez 5 dans n'importe quel environnement
Vous pouvez le convertir en type ʻunicode en appelant la méthode
decodede type
str. Inversement, vous pouvez le convertir en un type
str en appelant la méthode ʻencode
du type ʻunicode`.
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
Passer un encodage incorrect à la méthode decode
entraînera une erreur ʻUnicodeDecodeError`.
aiueo_shiftjis.decode('utf-8') #Erreur UnicodeDecodeError
Python3
Il semble que str
soit changé en bytes
et ʻunicode soit changé en
str` dans Python3 parce que c'est déroutant.
Recommended Posts