一、编码

    ascci码:美国人发明,用一个字节存储英文和字符,前期用了128个,后来新加了其它欧洲国家的符号,128-255这一段。总共256个字符

    unicode:2个byte,65535。因为后来发现还有其他国家的语言,而256个字符太少。

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

    gbk:国标

二、为什么要转码?

    python2默认编码是ascci,python3默认编码是utf-8。查看当前编码:

import sys
print(sys.getdefaultencoding())

    修改当前编码的两种方式:

import sys
reload(sys)
sys.setdefaultencoding('utf-8')
# -*- coding:utf-8 -*-

三、编码转换

    unicode转换成其它编码使用encode,其它编码转化成unicode使用decode。

a.encode(* *):将a 编码 为 * *编码格式的字符串或unicode对象

    a.decode(* *):将a 解码 为 unicode编码格式的字符串或unicode对象

四、python3引入的bytes和bytearray

     1、字符串:字符组成的不可变序列

     2、bytes:字节组成的不可变序列,拥有字符串的方法,如split,replace,strip

          定义方式:

bytes()                        # 空bytes
bytes(5)                       # 指定size的bytes,用0填充
bytes(range(10))               # 只能放[0,255]的可迭代对象
'kuangfeng'.encode()           # 字符串转换成bytes类型
bytes(bytes(range(10)))        # 从原有bytes中复制一个新的------不可变对象
a=b'kuangfeng'

     3、bytearray:字节组成的可变序列,拥有列表的方法,如append,pop,remove,extend

          定义方式

bytearray()                        # 空bytearray
bytearray(5)                       # 指定size的bytearray,用0填充
bytearray(range(10))               # 只能放[0,255]的可迭代对象
bytearray(string,'utf8')           # 字符串转换成bytearray类型,可变对象
bytearray(bytes(range(10)))        # 从原有bytes中复制一个新的------可变对象