分享

Python字符编码

 昵称11935121 2018-07-21

理解字符编码之前,先了解一些基础的字节、字符、字符集、字符码、字符编码。

字节

字节(byte),是计算机信息技术用于计量存储容量的一种计量单位,通常情况下一字节等于有八位,一个中文字占2个字节。无论保存在磁盘还是网络传输上的数据(文字、图片、视频、音频)都是由字节组成的。

  • 8bit(位)=1Byte(字节)

  • 1024Byte(字节)=1KB

  • 1024KB=1MB

  • 1024MB=1GB

  • 1024GB=1TB

字符

字符(Character)是指计算机中使用的字母、数字、字和符号,包括:1、2、3、A、B、C、~!·#¥%……—*()——+等等

字符集

字符集(Character set)是多个(某个范围)字符的集合,字符集种类较多,每个字符集包含的字符个数不同。

比如ASCII 字符集总共有128个字符,包含了英文字母、阿拉伯数字,标点符号和控制符。而GB2312字符集定义了

7445个字符,包含了绝大部分分汉字。

字符码

字符码(Code Point)是指字符集中的字符对应的数字编号,例如ASCII中字符集用0-127分别表示128个字符,“A' 在字符编码就是65。

字符编码

字符编码(Character encoding) 是将字符集中的字符码映射为字节流的一种具体实现方案,常见的字符编码有ASCII编码、UTF-8编码、GBK编码等,某种意义上来说,字符集与字符编码有某种对应关系,例如ASCII字符集有对应ASCII编码。ASCII字符编码规定使用单字节中低位的7个比特去编码所有的字符。

例如“A” 的字符集编号是65,用单字节表示就是0x41,因此写入存储设备的时候就是b'01000001'

编码、解码

  • 编码过程:就是将字符转换成字节流。

  • 解码过程:就是将字符流解析为字符。

ASCII 编码

ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。

  • 国际标准的ASCII只有128位

Python字符编码

  • 扩展ASCII编码达到256位

Python字符编码

Unicode

Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。

Unicode存在的问题

  • Unicode是一个符号集,它规定了符号的二进制代码,却没有规定二进制代码如何储存。

  • 出现了 Unicode 的多种存储方式,也就是说有许多种不同的二进制格式,可以用来表示 Unicode。Unicode 在很长一段时间内无法推广,直到互联网的出现。

UTF-8

UTF-8 就是在互联网上使用最广的一种 Unicode 的实现方式。其他实现方式还包括 UTF-16(字符用两个字节或四个字节表示)和 UTF-32(字符用四个字节表示),不过在互联网上基本不用。重复一遍,这里的关系是,UTF-8 是 Unicode 的实现方式之一

  • UTF-8 最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。

  • UTF-8 的编码规则很简单,只有二条:

    1)对于单字节的符号,字节的第一位设为0,后面7位为这个符号的 Unicode 码。因此对于英语字母,UTF-8 编码和 ASCII 码是相同的

    2)对于n字节的符号(n > 1),第一个字节的前n位都设为1,第n + 1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的 Unicode 码。

Python中的编码

  • python2默认编码是ASCII, python3里默认是unicode

  • unicode 分为 utf-32(占4个字节),utf-16(占两个字节),utf-8(占1-4个字节), utf-16就是现在最常用的unicode版本, 不过在文件里存的还是utf-8,因为utf8省空间

  • 在py3中encode,在转码的同时还会把string 变成bytes类型,decode在解码的同时还会把bytes变回string

Python字符编码

此图截取自金角大王博客

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多