因为len并不是拿来看对象大小的,它返回的是一个对象中包含的“东西”的个数len(s)
Return the length (the number of items) of an object. The argument may be a sequence (such as a string, bytes, tuple, list, or range) or a collection (such as a dictionary, set, or frozen set).
如: len(“您”) = 1; 因为’您’这个字符串里面有一个字符,所以len(‘您’)返回的是1
所以len(“您”) 的值为1 ,相反,字符串转换为bytes 类型后,长度为3
# 字符串len使用
a = "您!"
print(len(a))
# 转换bytes
b = a.encode("utf-8")
print(b, len(b))
#
c = a.encode("gbk")
print(c, len(c)))
结果为:
2
b'\xe6\x82\xa8!' 4
b'\xc4\xfa!' 3
可以看出
python的len 并非是c语言的strlen!!!
一个中文 在gbk 中占据2个字节 在utf-8中占据3个字节。
引申个问题: python字符串截断的问题
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe5 in position 3: unexpected end of data
如下代码:
a