刚开始学习编程的时候,老对字符串编码的理解模模糊糊。也一直看这方便的资料,今天在看Dive in python时,忽然有了新的理解(不知道是否正确)。python
Python有个built-in函数ord(),返回一个字符的unicode值。这个函数并无其余参数,那就是说,给定一个字符,就会有一个特定值对应。跟具体编码(utf-8,utf-16,gb2312)无关。编程
我以前错误的理解是:每套编码都有本身的对应表。网络
如今看来,unicode标准囊括了世界上全部的字符,每一个字符都有对应的unicode值。函数
我所谓的编码,好比utf8, utf16, gb2312等等,其实只是在保存到磁盘或者经过网络传输时,序列化成二进制的方式而已,跟字符的unicode值毫无关系。学习
utf-32用4字节保存一个字符,虽然浪费空间,可是从二进制解析(decode)成字符的时候,速度确定比utf8快,由于每四个字节表示一个字符,在一个流中查找特定位置的字符确定要快, O(1)。ui
utf-8变长保存,虽然节省了空间,可是查找特定位置字符比较困难,时间效率是O(n)编码