字符编码发展:
ASCII 255 1个字节
1980 gb2312
1995 GBK1.0
2000 GB18030
Unicode 英文1byte,欧洲2bytes,中文3bytes
utf-8可变长,英文单词存的是ASCII码,1byte;中文存的是Unicode,3bytes
不同编码格式之间的相互转换:
转换规则:python2和python3中不同编码格式之间的相互转换都要经过Unicode
转换方法:先decode(’编码格式‘)转成Unicode在encode(’需要传换成的编码格式‘)
注意:python所有的数据类型都是Unicode,-*- coding:utf-8 -*-声明的是文件编码格式
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # Author:James Tao 4 5 import sys 6 7 print('默认编码格式为',sys.getdefaultencoding())#显示默认编码格式 8 9 s='你好'#s的格式依然是Unicode,所以s.decode不存在 10 11 print('s经过gbk编码之后得到',s.encode('gbk')) 12 print('s经过utf-8编码之后得到',s.encode('utf-8')) 13 print('s经过utf-8编码,再解码成Unicode,再经过gb2312编码之后得到',s.encode('utf-8').decode('utf-8').encode('gb2312')) 14 print('s经过gb2312编码之后得到',s.encode('gb2312')) 15 16 s_gbk=s.encode('gbk')#gbk编码,python3默认再转成bytes类型 17 print('s:',s) 18 print('s经过gbk编码之后得到:',s_gbk) 19 print('s经过utf-8编码之后得到:',s.encode()) 20 21 gbk_to_utf8=s_gbk.decode('gbk').encode('utf-8')#先将gbk转成Unicode再转成utf-8 22 print('将gbk转换成utf-8后的s:',gbk_to_utf8)
得到结果: