ascall码
ascall码包含128和英文字母和特殊字符的编码格式,其中0-31和最后一个字符为控制字符(不能够显示,但是能起到控制作用),剩下的字符为可显示字符,有95个,每个字符都占用一个字节,由于一个字节为八个比特位,所以最多能表示2的8次方个不同的字符。由于python被整出来的时候,主要还是ascall编码方式,unicode编码还没有出来,所以早期的python版本,如python2采用的是ascall编码方式。
unicode
unicode编码又称为万国码,它包含几乎每个国家的每个文字所对应的编码方式,比如我们中国的gbk编码,几乎包含了每个汉字的编码格式,由于一个字节需要八个比特位,这八位完全不足以表示汉字,所以unicode为了能够适应国际的需求,将ascall码原来存储一个字符为一个字节的基础上,进行了修改,修改为一个字符用两个字节来存储,所以原来ascall中的字符之前所对应编码格式,高位进行了补0,虽然unicode满足了国际的需求,但是也留下了一个重要的问题,那就是对于一个可以用一个字节足以完成编码的字符,却变成了两个字节,这样也大大浪费了很多的空间。python3采用的编码方式为unicode编码。
utf-8
utf-8是ascall和unicode中间的一种格式编码,它具有伸缩性,它在unicode编码的基础上进行了完善,对于仅用一个字节可以表示的字符不用两个字节,这样就很好地节省了很大的空间,utf-8目前也是采用最为普遍的编码方式。