一、基本概念 1)编码:把字符串str转换成用于存储或传输的字节序列bytes 2)解码:把字节序列bytes转换成人类可读的文本字符串str 二、python3里面内置了两种基本数据类型:
1)str 数据类型----以unicode(万国码)编码存储 2)bytes 数据类型----以十六进制形式存储 三、编码解码方式: 由于socket通信的发送和接收都只接收bytes类型数据,而实际传过去的可能是str类型,所以系统需要对数据进行编码和转码 1)str>>>bytes:编码 方法1:字符串数据.encode(编码规则) eg: s=“hello” bt=s.encode("utf-8") #采用utf8编码规则将str类型数据转换为byte类型数据 方法2:bytes(字符串数据,编码规则) eg: s="hello" bt=bytes(s,"utf8") #采用utf8编码规则将str类型数据转换为byte类型数据
2)bytes>>>str:解码 方法1:字符串数据.decode(编码规则) eg: bt=bytes("welcome 袁","utf8") s=bt.decode("utf-8") #采用utf8编码则对应解码也应该采用utf8.否则会出现解码错误情况 方法2:str(bytes类型数据,编码规则) eg: bt=bytes("welcome 袁","utf8") s=str(bt,"utf8") #采用utf8编码则对应解码也应该采用utf8.否则会出现解码错误情况 完整的编码解码: utf8编码:
#编码 s="welcome 元昊" print(type(s)) b=bytes(s,"utf8") #用utf8编码规则将str类型数据转换为byte类型数据 print(b) #b'welcome \xe5\x85\x83\xe6\x98\x8a' b1=s.encode("utf8") print(b1) #b'welcome \xe5\x85\x83\xe6\x98\x8a' #解码 new_s=b1.decode("utf8") #用什么规则编码就要用什么规则解码 print(new_s) #welcome 元昊 new_s1=str(b1,"utf8") print(nw_s1) GBK编码:
s1="hello一栏" new_b=bytes(s1,"gbk") print("gbk编码方式下的bytes类型:%s" %new_b) #b'hello\xd2\xbb\xc0\xb8' s11=new_b.decode("gbk") print("gbk解码后str类型:%s" %s11) #hello一栏
四、非str类型数据编码 eg:int类型编码 i=123 bytes(str(i),"utf8") #先将int类型强制转str类型,之后再用bytes方式进行编码 其他数据类型方法也一样,无法直接使用bytes进行编码的都需要先强制转str后再进行编码
版权声明:本文为weixin_68123569原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。