转自https://gist.github.com/x7hub/178c87f323fbad57ff91
str和unicode是两个不同的类。
str 存储的是已经编码后的字节序列,输出时看到每个字节用16进制表示,以\x开头。每个汉字会占用3个字节的长度。
>>> a = '啊哈哈'
>>> type(a)
<type 'str'>
>>> a
'\xe5\x95\x8a\xe5\x93\x88\xe5\x93\x88'
>>> len(a)
9
>>> a[2]
'\x8a'
unicode 存储的是编码前的“字符”串,,输出是看到字符以\u开头。每个汉字占用一个长度。定义一个Unicode对象时,以u 开头。
>>> b = u'哟呵呵'
>>> type(b)
<type 'unicode'>
>>> b
u'\u54df\u5475\u5475'
>>> len(b)
3
>>> b[2]
u'\u5475'