- 几种编码
由于计算机只能识别0和1,为了把各种语言转化为机器能够识别的语言,就需要用到不同的编码。而计算机在设计的时候就定义了8bit为一个byte(字节)
ASCII码: 由于计算机起源于美国,而英文字母加上数字、标点等一个字节完全够用,著名的ASCII码由此而生:用一个字节,也就是8位二进制数的不同组合来表示英文中说用到的所有字符。
然而...
随着计算机的发展,流入各个国家,显然一个字节对于很多语言来说是完全不够用的,也因此各国在保持ASCII原有编码不变的情况下,进行了各自的扩充,例如我国的GB2312。
各国各自一套标注带来的结果就是,单有不同语言混在一起的时候,不管你选择哪一国的编码都无法对二进制全部进行解码,也就是会出现乱码。为了解决这个问题,我们熟悉的Unicode码得以诞生
Unicode码: 将各国语言统一编码,形成的一套国际编码
问题:其他编码为了兼容ASSII码,做法是保持低八位字节不变,其他为补0。这样带来的问题就是无意义的内存损耗。
UTF-8编码:UTF-8的出现完美的解决这个问题,UTF-8并不是国定的字节长度,当它表示中文的时候占两个字节,当它表示英文时就占一个字节。灵活的内存分配,节省了很多没必要的内存消耗
- Python的相关函数
ord()和chr()
ord():将字符串转换为Unicode码的十进制数字
chr():将十进制数字形式的Unicode码转换为对应字符串
注: 在Python3中,字符串以Unicode编码
encode()和decode()
encode():将字符串按照不同的编码方式按字节进行显示为字节流
decode():将逐个字节显示的字节流,按不同编码方式进行重新编码
注: python中用b''
的包裹方式,表示字节流
len()
计算字符串的字符个数,或者计算字节流的字节数
网友评论