Python编码

1、字符编码
  a、计算机只能处理数字,如果要处理文本就必须先把文本转换为数字
  b、ASCII:大写字母A的编码是65,小写字母z的编码是122
  c、ASCII编码是一个字节,而Unicode编码通常是2个字节。
  d、在计算机内存中,统一使用Unicode编码,用记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件。
  e、对于单个字符的编码,python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符:

           ord('A') :65
            ord(''):20013
            chr(66):'B'
            chr(25991):''

  f、由于python的字符串类型是str,在内存中以Unicode表示,一个字符对应若干个字节,如果要在网络上传输,或者保存到磁盘上,就需要把str变成以字节为单位的bytes.
  g、python对bytes类型的数据用带b前缀的单引号或双引号表示: 

       x = b'abc'

     要注意区分'ABC'和b'ABC',前者是str,后者虽然内容显示得和前者一样但bytes的每个字符都只占用一个字节。
  h、以Unicode表示的str通过encode()方法可以编码为指定的bytes.

       'ABC'.encode(ascii) :b'ABC'
       '中文'.encode('utf-8'):b'\xe4\xb8\xad\xe6\x96\x87'

  i、如果我们从网络或磁盘上读取了字节流那么读到的数据就是bytes,要把bytes变为str,就用decode()方法

        b'ABC'.decode('ascii'):'ABC'
        b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8'):'中文'

  j、要计算str包含多少个字符可以用len()函数:

       len('ABC'):3
       len('中文'):2

  k、len()函数计算的是str的字符数,如果换成bytes,len()函数就计算的是字节数:

       len( b'ABC'):3
       len(b'\xe4\xb8\xad\xe6\x96\x87'):6
       len('中文'.encode('utf-8')):6

   l、编码与解码方式如图。

 

posted @ 2018-06-03 10:33  Presley  阅读(186)  评论(0编辑  收藏  举报