python基础学习-字符编码
#__author:"Feng Lin" #date: 2018/8/26 #赋值 ==比较是否相等 is 比较内存地址 id(内容) li1=[1,2,4] li2=li1 li3=li2 print(id(li2),id(li3)) print(li2 is li3) # #python2中细节 # #数字,字符串,小数据池,节省内存空间 # #数字的范围-5 -----》256之间不新开辟内存空间 # a=6 # b=6 # print(id(a),id(b)) # print(a is b) # a=500 # b=500 # print(id(a),id(b)) # print(a is b) # #字符串: 1.不能含有特殊字符 # # 2.s*20还是同个地址,但是s*21超过20开辟新内存空间 # a='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' # b='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' # print(a is b) #字符编码 # ascii: # A: 000000010 8位 一个字节 # # unicode: # A: 00000000 00000001 000000010 00000100 32位 四个字节 # 中: 00000000 00000001 000000010 00000100 32位 四个字节 # utf-8: # A: 0010 0000 8位 一个字节 # 中: 00000001 00000010 00000110 24位一个字节 # # gbk: # A: 00000110 8位 一个字节 # 中: 00000010 00000110 16位 两个字节 #1,各个编码之间的而二进制不能相互识别,会导致乱码 #2,文件的存储和传输,不能用unicode(只能用utf-8,utf-16,gbk,gb2312,asciid等) #python3中,str用unicode存储 # bytes类型 # 对于英文: # str: 表现形式:s='alex' # 编码方式: 01010101 unicode # bytes:表现形式:s=b'alex' # 编码方式: 00001010 utf-8 gbk ... # # 对于中文: # str: 表现形式:s="中国" # 编码方式: 01010101 unicode # # bytes: 表现形式:s=b'x\e91\e91\e01\e02\e32\e31\' # 编码方式: 01011010 utf-8,gbk... #encode编码,将str---->bytes用于传输和存储,否则uncode太大,不利于存储和传输 #将英文encode s='linfeng' s1=s.encode('utf-8') s2=s.encode('gb2312') print(s1,"\n",s2) #将中文encode x="中国" x1=x.encode('utf-8') x2=x.encode('gbk') print(x1,"\n",x2)