一、编码原理及区别
·第一阶段:编码的由来:大家都知道计算机的母语是英语,英语是由 26 个字母组成的。
所以最初的计算机字符编码是通过 ASCII 来编码的,也是现今最通用的单字节编码系统,使
用 7 位二进制数来表示所有的字母、数字、标点符号及一些特殊控制字符,作为美国编码标
准来使用。
·第二阶段:由于计算机的不断普及,计算机进入了不同的国家和地区。很快表现出了众多
的水土不服的症状。比如:中国人就表示不服,就不能让计算机说中文吗?但是 ASCII 编码
用上浑身解数 256 个字符也不够中文用啊。
因此后来出现了 Unicode 编码。Unicode 编码通常由两个字节组成,共表示 256*256 个字符,
即所谓的 UCS-2。某些生僻的字还会用到四个字节,即 UCS-4。Unicode 向下兼容 ASCII。
·第三个阶段:在 Unicode 中,很快,美国人不高兴了,原本用一个字节就够了,现在却要
用两个字节来表示,非常浪费存储空间和传输速度。人们再发挥聪明才智,于是出现了 UTF-8
编码。主要针对空间浪费的问题。UTF-8 从英文字母的一个字节,到中文的通常的三个字节,
再到某些生僻字的六个字节。解决了空间浪费的问题,并且兼容老大哥 ASCII 编码。这样一
些老古董软件在 UTF-8 编码中可以继续工作了。
另外需要注意的是汉字在 Unicode 编码和 UTF-8 编码中通常是不同的。
·第四个阶段:同样我们祖国也制定了自己的一套标准。那就是 GB2312 和 GBK。但是大多
数还是直接用的 UTF-8。UTF-8/UTF-16 等是对 Unicode 进行了编码,是其一种实现方式。
另外还有 ISO-8859-1,ISO-8859-1 是单字节编码,向下兼容 ASCII,是许多欧洲国家使用的编
码标准。
Unicode 是国际通用的编码标准,可以表示全世界的字符,但其字符集也是最复杂、占用空
间最大的。开发者可以根据需要进行选择编码方式。
·我们的 Python3 默认就是 Unicode 编码
二、编码与解码
·Python 关于编码和解码对应的函数分别是 encode()和 decode(),对应编码和解码
·python2 中有 str 和 unicode 之分
·Python3 中有 str 和 bytes 之分
·str to unicode,使用 decode();unicode to str,使用 encode()
用图片来说明