如何在python 3中解释同一个unicode的不同长度

时间:2017-04-22 11:16:12

标签: python unicode

我试图理解我为同一个unicode字符以及它的字节对象获得的不同长度的含义!!!!!。

我知道第一个长度(Len1)是我的单个unicode字符的ACTUAL长度,第二个长度(Len2)可能是单个unicode字符占用的总字节数,但其余剩余长度是多少(Len3& ; Len4)代表?我正在使用python 3

MyStr = '✮'
print(MyStr," Len1 = ", len(MyStr))
print(bytes(MyStr, 'utf-8'), Len2 = ", len(bytes(MyStr, 'utf-8')))
print(MyStr.encode('unicode_escape'), " Len3 = ", len(MyStr.encode('unicode_escape')))
print(ascii(MyStr), " Len4 = ", len(ascii(MyStr)))

这是输出..

✮  Len1 =  1
b'\xe2\x9c\xae'  Len2 =  3
b'\\u272e'  Len3 =  6
'\u272e'  Len4 =  8

1 个答案:

答案 0 :(得分:0)

表示为特定Unicode字符的字节的时间长短取决于您如何表示它,字符是什么以及是否计算引号。

您的角色“✮”需要将三个字节表示为UTF-8字节流。当表示为UTF-8时,更常见的'*'只占用一个字节。

您的其他长度表示代表该字符的字符串的长度。由于该字符的顺序可以存储在16位值中,因此只需要4个十六进制数,而转义\u的两个位置的长度为6。如果你把它变成一个字符串2,就会计算额外的报价位置。