一、编码
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中复制一个新的------可变对象