• Python 编码


    1.编码类型:

    • ASCII 占1个字节,只支持英文
    • GB2312 占2个字节,支持6700+汉字
    • GBK GB2312的升级版,支持21000+汉字
    • Shift-JIS 日本字符
    • ks_c_5601-1987 韩国编码
    • TIS-620 泰国编码  
    •  Unicode  万国码      

    2.Python3 执行过程

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

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

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

    3.解码和编码

    UTF-8 --> decode 解码 --> Unicode
    Unicode --> encode 编码 --> GBK / UTF-8 ..    #网页爬取的时候,转码s.decode('gbk', ‘ignore').encode('utf-8′)
     

    decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode('gb2312'),表示将gb2312编码的字符串str1转换成unicode编码。

    encode的作用是将unicode编码转换成其他编码的字符串,如str2.encode('gb2312'),表示将unicode编码的字符串str2转换成gb2312编码。

    Python只要出现各种编码问题,无非是哪里的编码设置出错了
    4常见编码错误的原因有:

    • Python解释器的默认编码
    • Python源文件文件编码
    • Terminal使用的编码
    • 操作系统的语言设置

     5  python2和Python3中编码

    python2是ASCII,python3 是Unicode,出现了Unicode Transformation Format,学术名UTF,即:对unicode中的进行转换,以便于在存储和网络传输时可以节省空间!

    UTF 是为unicode编码 设计 的一种 在存储 和传输时节省空间的编码方案。

    python2  decode

    >>> s = "路飞"
    >>> print s
    路飞
    >>> s
    'xe8xb7xafxe9xa3x9e'
    
    >>> s
    'xe8xb7xafxe9xa3x9e' #utf-8
    >>> s.decode('utf-8')
    u'u8defu98de' #unicode 在unicode编码表里对应的位置
    >>> print(s.decode('utf-8'))
    路飞 #unicode 格式的字符
    
    
    >>> s = "路飞"
    >>> s
    'xe8xb7xafxe9xa3x9e'
    >>> s2 = s.decode("utf-8")
    >>> s2
    u'u8defu98de'
    >>> type(s2)
    <type 'unicode'>

    python3中解释器将utf-8转换成Unicode,python2 就不是, 它的默认编码是ASCII,想写中文,就必须声明文件头的coding为gbk or utf-8, 声明之后,python2解释器仅以文件头声明的编码去解释你的代码,加载到内存后,并不会主动帮你转为unicode,也就是说,你的文件编码是utf-8,加载到内存里,你的变量字符串就也是utf-8,这意味着,你以utf-8编码的文件,在windows是乱码。

    python3  除了把字符串的编码改成了unicode, 还把str 和bytes 做了明确区分, str 就是unicode格式的字符, bytes就是单纯二进制.

     

     
  • 相关阅读:
    最短路小变形
    最短路
    bfs + 路径输出
    优先队列
    dijkstra
    重载运算符-operator
    最短路
    二分图匹配
    依赖型的关系建立
    string 类
  • 原文地址:https://www.cnblogs.com/jdy113/p/7906757.html
Copyright © 2020-2023  润新知