字符编码发展: 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-822 print('将gbk转换成utf-8后的s:',gbk_to_utf8)
得到结果: