• 编码问题汇总


    ASCII码           

          A : 00000001   一个字节8位来表示一个字符

    Unicode

          A : 00000000  00000000  00000000  00000001   4个字节32位来表示一个字符

          中文一个字例如:

          中:00000000  00000000  00000001   3个字节24位来表示一个字符

    utf-8

            A :   00000001   1个字节8位来表示一个字符

           中文一个字,例如:

           中:00000000  00000000  00000001   3个字节24位来表示一个字符

       

    gbk 

             A :   00000001   1个字节8位来表示一个字符

            中文一个字,例如:

            中:  00000000  00000001   2个字节16位来表示一个字符

    总结:(python2和3通用的)

         1,各个编码之间的二进制,是不能相互识别的,会产生乱码(犹如:红军的密码本和日本鬼子的密码本是不一样的,不能通用)

      2,文件的储存,传输不能是Unicode(只能是utf-8,utf-16,gbk,gb2312,ASCII码等)  <原因是Unicode占用的空间太大>

    下面是python3所特有的性质:

    python3的字符串str 在内存中是用Unicode编码的。(产生的问题,储存和传输不是一种编码,需要转化)

    bytes类型: 

    对于英文:

        str  :表现形式: s = 'alex'

             编码方式:00000001    Unicode

        bytes:表现形式:s = b 'alex'

            编码方式:00000001    utf-8,gbk,gb2312等

    对于中文:   

              str  :表现形式: s = '中国'

               编码方式:00000001    Unicode

          bytes:表现形式:s = b 'xe91e91e01e21e31e32'                 是16进制

              编码方式:00000001    utf-8,gbk,gb2312等

    总结:

      实例展示:    

    s = 'alex'
    s1 = s.encode('utf-8')
    # encode 编码 将Unicode转化为utf-8或者gbk ; 表现形式是:str-->bytes
    print(s1)

    s ='中国'
    s1 = s.encode('utf-8')
    print(s1)

     结果截图如下:转化成了16进制(utf-8是3个字节表示一个汉字)

    s ='中国'
    s2 = s.encode('gbk')
    print(s2)

     结果截图如下:转化成了16进制(gbk是2个字节表示一个汉字)

     

  • 相关阅读:
    js中定时器2
    js中定时器之一
    js中的Event对象
    hdu 1041(递推,大数)
    hdu 1130,hdu 1131(卡特兰数,大数)
    hdu 2044-2050 递推专题
    hdu 3078(LCA的在线算法)
    hdu 1806(线段树区间合并)
    hdu 3308(线段树区间合并)
    poj 2452(RMQ+二分查找)
  • 原文地址:https://www.cnblogs.com/www-qcdwx-com/p/10169518.html
Copyright © 2020-2023  润新知