http://www.cnblogs.com/yuanchenqi/articles/5956943.html
utf-8可变长的字符编码,英文以ASCII占用一个字节,中文字符占用三个字节
1.在python2默认编码是ASCII, python3里默认是unicode
2.unicode 分为 utf-32(占4个字节),utf-16(占两个字节),utf-8(占1-4个字节), so utf-16就是现在最常用的unicode版本, 不过在文件里存的还是utf-8,因为utf8省空间
3.在py3中encode,在转码的同时还会把string 变成bytes类型,decode在解码的同时还会把bytes变回string
对于从python2.7过来的人,对python3的感受就是python3对文本以及二进制数据做了比较清晰的区分。文本总是Unicode
,由str
类型进行表示,二进制数据使用bytes
进行表示,不会将str
与bytes
偷偷的混在一起,使得两者的区别更加明显。在python2
中会明显发现不能将str
与bytes
拼接在一起,也不能在bytes
中查找字符。
然而在实际应用中经常需要对两者进行转换操作以便后续的代码能够顺利跑完。两者之间的关如下所示:
str->bytes:encode编码
bytes->str:decode解码
对于这些可以这么理解:
编码就是将字符串转换成字节码,涉及到字符串的内部表示。
解码就是将字节码转换为字符串,将比特位显示成字符。
原文:https://www.cnblogs.com/x2x3/p/10042322.html