字符编码总结


字符编码发展:
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)
 

得到结果:

 

猜你喜欢

转载自www.cnblogs.com/BIT-taozhen/p/9769724.html