• is,==区别,编码转换


    一.is 比较的是内存地址

         == 比较的是两边的值

    二.编码扩展:

    1字节(bytes) = 8 位(bit)

    1024byte = 1kb

    1024kb = 1MB

    1024MB = 1GB

    1024GB = 1TB

    ascii: 只能用于英文,8位 一个字节 首位都是0 最初只设计了7位,发明者预留了一位,以便后期扩展,所以最后是8位。

    unicode: 万国码,最早发明的时候16位,2个字节。

    后来进化:32位 四个字节

    utf-8:最少用8位表示一个字节

          英文:8位 一个字节

          欧洲文字:16位 两个字节

          中文:24位 三个字节

    gbk 国标,每个国家都有自己的gbk  英文: 8位 一个字节

                                                              中文:16位 两个字节

    1,  各个编码之间的二进制是不能互相识别,会产生乱码。

    2,  文件的储存,传输,不能是unicode(只能是utf-8 utf-16 gdk gb2312 ascii 等)因为存储空间太大,浪费,占用资源。涉及到转化到其他的编码。

    Py3:在py3中str 的编码方式是用unicode。

                       bytes类型:unicode转换成bytes类型在进行存储和传输。bytes和str类型基本一样,只有两个区别,1.编码方式,2.对于中文表现形式

    对于英文:

             str:   表现形式:s = ‘ales’                       例:a = ‘alex’

                         编码方式:010101010 unicode                  a1=b’alex’

             Bytes: 表现形式:s = b’alex’                          print(a,type(a))

                         编码方式:000101010 utf-8 gdk等              print(a1,type(a1))

     对于中文:

    str:   表现形式:s = ‘中国’                      

                         编码方式:010101010 unicode                 

                          Bytes: 表现形式:s=b’xe91e91e01e21e31e32’  三个字节表示一个中文                       

                         编码方式:000101010 utf-8 gdk等

    encode 编码:表现形式将str转换成 bytes类型,实际内部是将unicode转化为 utf-8或gbk编码  str--àbytes

                       例:sl = ‘alex’

                                sl1 = s1.encode(‘utf-8’)  转换成utf-8编码 (bytes类型),gbk也一样

                                print(sl1) 结果:b’alex’

    decode 解码:bytes----àstr  及 非unicode(utf-8,gbk等)-àunicode

    utf-8和gbk之间的转换:1.如果是字母,数字,特殊字符可以直接转换:

            例:s = ‘alex’

               s1 = s.encode(‘utf-8’)

               s2 = s1.decode(‘gbk’)

               print(s2)

                                        2.如果是中文,需要先转换成unicode在转换成utf-8或gbk

           例:

             例:s = ‘中国’

                    s1 = s.encode(‘gbk’)

                    s2 = s1.decode(‘gdk’).encode(‘utf-8)

                    print(s2.decode(‘utf-8’))

  • 相关阅读:
    java 服务端设置跨域
    Git 使用常用命令
    关于全局变量使用时编译问题
    从阿里云读取文档到后台
    kindeditor编辑器
    Java后台Excel表导出
    AVAudioPlayer
    网络第三节——NSURLSession
    KVC 和 KVO
    网络第二节——AFNworking
  • 原文地址:https://www.cnblogs.com/ITdong-1/p/9286098.html
Copyright © 2020-2023  润新知