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 typestr. 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