标签:开头 star 网络上传 utf8 实现 xca 网络传输 rac 存储
编解码
总而言之:
如果必须要存储到文件或者网络传输时:我们必须用bytes类型(gbk或utf-8编码的bytes类型字符串)。
我们用gbk还是utf-8?
bytes类型---->通过decode(解码)---->转化为Unicode类型(str)
Unicode类型---->通过encode(编码)----->转化为bytes类型
#py3里面的字符串 >>> s="a" >>> type(s) #py3对应的str是unicode类型 <class ‘str‘>
>>> s1=b‘a‘ #py3中前面加b是变成bytes类型
>>> type(s1)
<class ‘bytes‘>
>>> s="中国" >>> s.encode("utf-8") #encode编码后转为bytes类型 b‘\xe4\xb8\xad\xe5\x9b\xbd‘ #bytes类型前面有个b开头 >>> type(s.encode("utf-8")) <class ‘bytes‘> >>> >>> s.encode("gbk") #str类型转化为bytes类型需要encode编码一下 b‘\xd6\xd0\xb9\xfa‘ >>> s.encode("gbk").decode("gbk") #bytes类型转为str类型需要decode一下 ‘中国‘ >>> type(s.encode("gbk").decode("gbk")) <class ‘str‘> >>> 注意:写入文件时,必须encode后才能写入
>>> s="光荣之路测试开发培训".encode("gbk")#用gbk编码
>>> s
b‘\xb9\xe2\xc8\xd9\xd6\xae\xc2\xb7\xb2\xe2\xca\xd4\xbf\xaa\xb7\xa2\xc5\xe0\xd1\x
b5‘
>>> s.decode("utf-8")#用utf-8解码
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xb9 in position 0: invalid#报错:‘utf-8‘编解码器不能解码字节0xb9在位置0:无效
start byte
>>>
>>> s.decode("gbk")#用gbk解码
‘光荣之路测试开发培训‘
>>>
#py2里面的字符串 >>> s="abc" >>> type(s) #py2对应的str是bytes类型 <type ‘str‘> >>> >>> s.decode("gbk") #py2str类型不能encdoe,只能先decode, u‘abc‘ #解码后是unicode,开头加了u >>> type(s.decode("gbk")) <type ‘unicode‘> >>> print s.decode("gbk") abc >>> print s.decode("gbk").encode("gbk") abc >>>
注:如果记不住可以不用管py2里的情况只记py3的
标签:开头 star 网络上传 utf8 实现 xca 网络传输 rac 存储
原文地址:https://www.cnblogs.com/wenm1128/p/11550804.html