失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > python解码函数_python2和python3的编码encode解码decode函数

python解码函数_python2和python3的编码encode解码decode函数

时间:2019-04-07 04:07:54

相关推荐

python解码函数_python2和python3的编码encode解码decode函数

python比较坑的一个点;意义完全变了的两个函数

首先 常用的编码方式有3种,utf-8: 常用的传输和存储格式,Unicode的一种简化

Unicode:包括了所有可能字符的国际统一编码

GBK:中文的一种编码标准,包括中文和英文

在python2中 解码函数decode是 其他编码(utf-8或GBK或其他)——>Unicode编码 用法:u=str.decode('utf-8') 括号里是原编码格式

encode是 Unicode编码——>其他编码(utf-8或GBK或其他) 用法:g=u.encode('gbk') u是Unicode编码格式,括号里是目标编码格式

在python3中:python3中不用再考虑Unicode也不用考虑字符串的原编码类型, 文件读入str后都是Unicode编码,文件处理后, 想写到文件用什么编码方式,在函数中用变量定义就好。

字符串有两种数据类型,一种是字符串str,另一种是字节数据bytes

编码函数还是encode,但意义完全不同了,编码函数是 字符串str——>目标编码格式的字节类型bytes

s = "中文"t=s.encode(encoding='utf-8')

p=s.encode(encoding='gbk')print(t)print(p)

输出:

b'\xe4\xb8\xad\xe6\x96\x87'b'\xd6\xd0\xce\xc4'

解码函数还是decode,但意义完全不同了,解码函数是字节类型bytes——>字节编码类型的字符串str

s = "中文"p=s.encode(encoding='gbk')

sp=p.decode(encoding='gbk')print(p)print(sp)

b'\xd6\xd0\xce\xc4'中文

这里要注意以什么格式编码就要以什么格式解码,要不然会报错

s = "中文"p=s.encode(encoding='gbk')

sp=p.decode(encoding='utf-8')print(p)print(sp)

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd6 in position 0: invalid continuation byte

举个大栗子

s = "中文"g=s.encode(encoding='gbk') #从utf-8转成gbk字节码

gg=g.decode(encoding='gbk') #从gbk字节码转成gbk字符串

u=gg.encode(encoding='utf-8')#从gbk转成utf-8

uu=u.decode(encoding='utf-8')

k=uu.encode(encoding='gbk') #从utf-8转成gbk

kk=k.decode(encoding='gbk')print(g)print(gg)print(u)print(uu)print(k)print(kk)

输出:

b'\xd6\xd0\xce\xc4'中文

b'\xe4\xb8\xad\xe6\x96\x87'中文

b'\xd6\xd0\xce\xc4'中文

注意:在python3中,str全部都是Unicode编码,所以看str变量的编码没有什么意义,而如果encode了,自然要encode里的变量参数来按编码类型编码

如果觉得《python解码函数_python2和python3的编码encode解码decode函数》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。