py08-字符编码

1、什么是字符编码?

  计算机要想工作必须通电,也就是说电能驱使计算机干活,而电的特性就是高低电平(高低平即二进制数1,低电平即二进制数0),也就是计算机只认识数字。

  很明显,我们平时在使用计算机时,用的都是人类能读懂的字符,如何能让计算机读懂人类的字符?

  必须经过一个过程:

  字符------(翻译过程)------->数字

2、字符编码的发展史

  阶段一:现代计算机起源于每个,最早诞生也是基于英文考虑的ASCII。

  ASCII:一个Bytes代表一个字符,1Bytes=8bit

  阶段二:为了满足中文,中国人定制了GBK

  GBK:2Bytes代表一个字符。

  为了满足其他国家,各个国家纷纷定制了自己的编码,日本把日文编到Shift_JIS里,韩国把韩文编到Euc-kr里。

  阶段三:各国有各国的标准,就会不可避免出现冲突,结果就是在多语言混合的文本中,显示会出现乱码。于是产生了Unicode,统一用2Bytes代表一个字符。

  接着就产生了UTF-8,对英文字符只用1Bytes表示,对中文字符用3Bytes。

  对比:

    unicode:简单粗暴,所有字符都是2Bytes,优点是字符->数字的转换速度快,缺点是占用空间大。

    utf-8:精确,对不同的字符用不同的长度来表示,优点是节省空间,缺点是字符->数字的转换速度慢,因为每次都需要计算出字符需多长的Bytes才能够准确表示。

  特例:

  1、内存中使用的编码是unicode,用空间换时间(程序都需要加载到内存才能运行,因而内存应该是尽可能的保证快)

  2、硬盘中或者网络传输用utf-8,网络I/O延迟或磁盘I/O延迟要远大utf-8的转换延迟,而且I/O应该是尽可能地节省带宽,保证数据传输的稳定性。

3、字符编码作用: 

  unicode----->encode('utf-8')-------->utf-8

  utf-8-------->decode('utf-8')---------->unicode

  原则:字符以什么格式编译的,就要以什么格式解码

  python3中的字符串分为两种:

    x='egon' 存储unicode
    y=x.encode('utf-8') 存成bytes
  python2中字符串也分两种:
    x=u'egon' 与python3中的字符串一样
    y='alex' 与python3中的bytes一样

 

posted @ 2017-07-27 22:18  sysgit  阅读(154)  评论(0编辑  收藏  举报