问题是这样的:
执行如下代码:
str = "信息"
strU = u"信息"
length = len(str)
lengthU = len(strU)
print length,lengthU
发现长度分别为:6 , 2
为什么python中unicode对象与str对象中汉字的长度不同啊,哪位朋友能讲一下,记得老师说过一个汉字一般是3个字节了,为什么在unicode对象中每个汉字代表一个字节?
十分感谢
对unicode字符串取len就是取得汉字的个数,所以是2
标准的Python字符串确实是字节字符串,而且一个Python字符真的是一个字节。但是一个Python Unicode码字符是一个大到足够支持(Unicode)字符的一个抽象对象。因此用len的时候,前面标准的字节字符串的长度,就是字节数,但是unicode的长度就可以理解成里面抽象的对象的个数了。所以输出的是6和2
按理说都应该输出2,但是前者输出6,这是因为你的码表没有设置对,被当成6个非unicode字符了。在windows的区域选项中可以设置非unicode字符集,看你怎么设置的。
需要复习编码只是,搞清楚什么是gbk,utf-8,unicode. 你的问题就解决了. 这种文章网上很多.