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

     

  • 相关阅读:
    从JAVA看C#中volatile和synchronized关键字的作用
    SSAS动态添加分区 (转载)
    IIS7的集成模式下如何让自定义的HttpModule不处理静态文件(.html .css .js .jpeg等)请求
    SqlServer Analysis Service的事实维度关系
    SqlServer分区表概述(转载)
    SQL2005中的事务与锁定(九)-(1)- 转载
    SQL2005中的事务与锁定(八)- 转载
    SQL2005中的事务与锁定(七)
    LINUX下编译ffmpeg-x264出现的错误及解决转
    从ffmpeg源代码分析如何解决ffmpeg编码的延迟问题 (转)
  • 原文地址:https://www.cnblogs.com/www-qcdwx-com/p/10169518.html
Copyright © 2011-2022 走看看