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

     

  • 相关阅读:
    抓取网页萃取网页内容的代码 选择自 liujien 的 Blog
    asp.net2.0
    C# veriosn 3
    ASP.NET常用代码
    vbs automation copy file X: to X
    教学进度
    八岁女孩打电话给爆破公司要求炸毁学校(带中文翻译)
    闲话排序问题
    奋进号(Endeavour)太空梭,将执行最后一次太空任务
    Chrome: Google Translate 开始支持语音输入了!
  • 原文地址:https://www.cnblogs.com/www-qcdwx-com/p/10169518.html
Copyright © 2011-2022 走看看