1、编码常识
- 在python 2中默认编码是 ASCII,而在python 3中默认编码是 unicode
- unicode 分为utf-32 (占4个字节),utf-16(占两个字节),utf-8(占1-4个字节),所以utf-16 是最常用的unicode版本,但是在文件里存的还是utf-8,因为utf8省空间
- 在python 3,encode编码的同时会把stringl变成bytes类型,decode解码的同时会把bytes类型变成string类型
- 在unicode编码中 1个中文字符=2个字节,1个英文字符 = 1个字节,切记:ASCII是不能存中文字符的
- utf-8是可变长字符编码,它是unicode的优化,所有的英文字符依然按ASCII形式存储,所有的中文字符统一是3个字节
- unicode包含了所有国家的字符编码,不同字符编码之间的转换都需要经过unicode的过程
- python本身的默认编码是utf-8
在Python2.X中,默认编码是ASCII
#-*- encoding:utf-8 -*-
import sys
print(sys.getdefaultencoding()) #打印当前默认编码
s = '你好!!!'
s_to_unicode = s.decode('utf-8') #需要指定编码方式为utf-8(否则会使用默认编码)
print(s_to_unicode) #此时可以打印中文
2、Python2.x utf-8转换成gbk格式
1 #-*- encoding:utf-8 -*- 2 s = '你好!!!' 3 s_to_unicode = s.decode('utf-8') #需要指定编码方式为utf-8(否则会使用默认编码) 4 s_to_gbk = s_to_unicode.encode('gbk') 5 合成一句 6 #s_to_gbk = s.decode('utf-8').encode('gbk') 7 print(s_to_gbk)
3、Python2.x gbk转换成utf-8格式
1 #-*- encoding:utf-8 -*- #属于文件编码 2 s = '你好!!!' #默认编码也是utf-8 3 s_to_gbk = s.decode('utf-8').encode('gbk') 4 gbk_to_utf-8 = s_to_gbk.decode(‘gbk’).encode(‘utf-8’) 5 print(gbk_to_utf-8)
4、Python3.x unicode转换成gbk,gbk再转换成utf-8,utf-8转换成unicode
1 s = '你好' #python3 默认是unicode 2 3 s_gbk = s.encode("gbk") #将unicode转换成gbk 4 5 print(s_gbk) 6 print(s.encode())#默认解码成utf-8 7 8 gbk_to_utf8 = s_gbk.decode('gbk').encode('utf-8') 9 print(gbk_to_utf8) 10 11 utf8_to_unicode=gbk_to_utf8.decode('utf-8') 12 print(utf8_to_unicode) 13 14 输出结果: 15 utf-8 16 b'xc4xe3xbaxc3' #encode会将结果变成二进制编码 17 b'xe4xbdxa0xe5xa5xbd'
18 b'xe4xbdxa0xe5xa5xbd'
你好 #decode会将结果变成字符