• 编码转换


    python2

    • python2默认编码ascIII
    • 字符串编码默认ASCII编码
    • py2有Unicode类型,encode后才是字符型
    • 所以要表示中文,要在开头声明,以此种编码解码到内存,而且内存上的也是此种编码,这样的话在Windows上就可能是乱码的了  eg: #! -*- coding: utf-8 -*-    or    #!encoding:utf-8
    • 手动转码 
      • UTF-8 --> decode 解码 --> Unicode
      • Unicode --> encode 编码 --> GBK / UTF-8 .. bytes 
    • bytes == str

    python3 

    • python3默认编码utf-8 
    • 字符串编码默认Unicode 
    • py3没有Unicode类型,只有str类型
    • 解释器找到代码文件,把代码字符串按文件头定义的编码加载到内存,自动转成unicode
    • 把代码字符串按照语法规则进行解释,
    • 所有的变量字符都会以unicode编码声明
    • 把unicode编码后,字符串就变成了bytes格式,必须得是unicode编码,才显示字符
    • 内存为Unicode,但存储到硬盘,却要转换成utf-8,是为了存储传输

      为什么在py3里,把unicode编码后,字符串就变成了bytes格式? 你直接给我直接打印成gbk的字符展示不好么?我想其实py3的设计真是煞费苦心,就是想通过这样的方式明确的告诉你,想在py3里看字符,必须得是unicode编码,其它编码一律按bytes格式展示。 

    注意:

    • 所有系统都支持Unicode  
    • chr(97)  >>>"a"    #转换ASCII码
  • 相关阅读:
    2021 省选颓记
    题解 UVA12459 Bees' ancestors
    题解 UVA10812 Beat the Spread!
    题解 UVA12230 过河 Crossing Rivers
    题解 P1850 [NOIP2016 提高组] 换教室
    题解 P1297 [国家集训队]单选错位
    CSP2020 游记
    学习笔记10-18
    【题解-SP1724 TRICOUNT】简单易懂的递推式写法
    题解:论如何利用 大 模 拟 吊打LGJ~
  • 原文地址:https://www.cnblogs.com/leiyiming/p/8905860.html
Copyright © 2020-2023  润新知