python基础 - 字符串的编码

  • 几种编码
    由于计算机只能识别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()
    计算字符串的字符个数,或者计算字节流的字节数
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容