zoukankan      html  css  js  c++  java
  • 编码问题汇总

    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个字节表示一个汉字)

     

  • 相关阅读:
    jQuery之元素操作及事件绑定
    JS中常遇到的浏览器兼容问题和解决方法
    九九乘法表
    全选复习
    css基本知识
    js数组
    Spark常见错误问题汇总
    被问懵逼的Kafka面试题
    被问懵逼的数仓面试
    Flink模拟项目: 订单支付实时监控
  • 原文地址:https://www.cnblogs.com/www-qcdwx-com/p/10169518.html
Copyright © 2011-2022 走看看