浅析python2x与python3x里的str,unicode,bytes关系

python2x中:

[str].decode(str对应的编码)=[unicode],并且用什么码编码就用什么码解码

[unicode].encode(你想要的编码方式)=[str],解释器编码方式要与字符串的编码方式一样才能解出正确的字符。


python3x中:

str不能解码了,str对象压根没有decode属性了,在Python3x中不在有unicode这一说了,只有str和bytes这两个概念了

(其实是Python把unicode隐藏了)。

(str).encode(‘编码方式’)=(bytes) 
(bytes).decode(‘bytes对应的编码’)=(str) 


总结:

我们来总结一下,Python2x中,保存了什么字节序列,他就原封不动的读取进来,然后告诉你这是str类型(底层是字节序列),那么你可以把它decode一下,变成可以跨平台使用的unicode。好了,你要输出到文件中去了,那你得以一个具体的规则输出,也就是把unicode encode一下又变str(字节序列)。 
Python3x中,文本中保存了字节序列,读取的时候Python解释器用设定的默认编码去解码了一道,变成了unicode,所以你不需要操作了,但是它告诉你这是str,你就当不知道,反正不管怎么夸平台都不会出错了。到了要输出的时候,再把unicode encode成bytes(字节序列)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值