分享

python2和3编码

 rongq2007 2021-07-22

作用:python3.x里默认的str是(py2.x里的)unicode, bytes是(py2.x)的str, b”“前缀代表的就是bytes 

python2.x里, b前缀没什么具体意义, 只是为了兼容python3.x的这种写法

https://www.cnblogs.com/single-boy/articles/7562534.html

https://blog.csdn.net/sinat_40292249/article/details/96431295

http://blog.sciencenet.cn/blog-3428464-1247188.html

https://www.jianshu.com/p/19c74e76ee0a

https://blog.csdn.net/weixin_42989523/article/details/81873874

Python3的执行过程

在看实际代码的例子前,我们来聊聊,python3 执行代码的过程

  1. 解释器找到代码文件,把代码字符串按文件头定义的编码加载到内存,转成unicode

  2. 把代码字符串按照语法规则进行解释,

  3. 所有的变量字符都会以unicode编码声明

  4. so ,一切都很美好,到这里,我们关于编码的学习按说就可以结束了。

  5. 但是,如生活一样,美好的表面下,总是隐藏着不尽如人意,上面的utf-8编码之所以能在windows gbk的终端下显示正常,是因为到了内存里python解释器把utf-8转成了unicode , 但是这只是python3, 并不是所有的编程语言在内存里默认编码都是unicode,比如 万恶的python2 就不是, 它的默认编码是ASCII,想写中文,就必须声明文件头的coding为gbk or utf-8, 声明之后,python2解释器仅以文件头声明的编码去解释你的代码,加载到内存后,并不会主动帮你转为unicode,也就是说,你的文件编码是utf-8,加载到内存里,你的变量字符串就也是utf-8, 这意味着什么你知道么?。。。意味着,你以utf-8编码的文件,在windows是乱码。 

  6. 记住下图规则

  7. python3默认使用的是str类型对字符串编码,默认使用bytes操作二进制数据流,两者不能混淆!!
    Python3有两种表示字符序列的类型:bytes和str。前者的实例包含原始的8位值,后者的实例包含Unicode字符。Python2也有两种表示字符序列的类型,分别叫做str和Unicode,与Python3不同的是,str实例包含原始的8位值;而unicode的实例,则包含Unicode字符。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多