从ord()中对Unicode编码的理解

刚开始学习编程的时候,老对字符串编码的理解模模糊糊。也一直看这方便的资料,今天在看Dive in python时,突然有了新的理解(不知道是否正确)。

Python有个built-in函数ord(),返回一个字符的unicode值。这个函数并没有其他参数,那就是说,给定一个字符,就会有一个特定值对应。跟具体编码(utf-8,utf-16,gb2312)无关。

我之前错误的理解是:每套编码都有自己的对应表。

现在看来,unicode标准囊括了世界上所有的字符,每个字符都有对应的unicode值。

我所谓的编码,比如utf8, utf16, gb2312等等,其实只是在保存到磁盘或者通过网络传输时,序列化成二进制的方式而已,跟字符的unicode值毫无关系。

utf-32用4字节保存一个字符,虽然浪费空间,但是从二进制解析(decode)成字符的时候,速度肯定比utf8快,因为每四个字节表示一个字符,在一个流中查找特定位置的字符肯定要快, O(1)。

utf-8变长保存,虽然节省了空间,但是查找特定位置字符比较困难,时间效率是O(n)

原文地址:https://www.cnblogs.com/junejs/p/4413644.html