首页 > 代码库 > python字符编码、文件处理、函数

python字符编码、文件处理、函数

一、字符编码
1、什么是字符编码
  把字符转换成计算机可识别的机器码(0,1)的过程,称之为字符编码。


2、字符编码的类型
  1)现代计算机起源于美国,最早诞生也是基于英文考虑的ASCII
    ASCII:一个Bytes(字节)代表一个字符(英文字符、键盘上的所有其它字符),1Bytes=8bit,8bit可以表示为2的8次方种变化,即可以表示256个字符。
    ASCII最初只用了后攻位,127个数字,已经完全能够代表键盘上所有的字符了(英文字符/键盘的所有其他字符),后期将拉丁文也编码进了ASCII表,占用了最高位。


  2)为了满足中文,中国人定制了GBK
    GBK:2Bytes代表一个字符
    为了满足需求,各国家分别定制了自己的编码。日文编码Shift_JIS,韩文编码Euc-kr。


  3)各国编码遵循自己的标准,当在多语言混合的文本中,就会出现冲突,显示乱码。于是产生了unicode万国码。
    unicode:统一用2Bytes代表一个字符,2**16-1=65535,可代表655535个字符,因而兼容万国语言。
    由于固定使用2字节代表一个字符,对于英文文本来说,多占用了一倍的存储空间,于是产生了utf-8。


  4)utf-8:对文本进行判断,中文使用3Bytes,英文字符只有1Bytes。

  ps:unicode与uft-8比较:
    unicode:简单粗暴,所有字符都是2Bytes,优点是字符->数字的转换速度快,缺点是占用空间大,(内存使用unicode速度快)。
    utf-8:精准,对不同的字符用不同的长度表示,优点是节省空间,缺点是:字符->数字的转换速度慢,因为每次都需要计算出字符需要多长的Bytes才能够准确表示,(硬盘使用utf-8节省空间)。

3、字符编码的使用
 以文本编辑器举例,不管时打开读取还是修改都是在内存中打开。
  读取文件时,是decode的过程:把硬盘中utf-8格式的文本-》decode(翻译)-》内存unicode格式。
  保存文件时,是encode的过程:把内存中unicode格式的文本-》encode(翻译)-》硬盘中utf-8格式。

4、python3与2中编码的区别
  python3中所有的字符串都会被识别成unicode 字符编码。
  python2中所有的字符串就是编码后的结果bytes字节。

python字符编码、文件处理、函数