python-day06-study-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’x\e91\e91\e01\e21\e31\e32’  三个字节表示一个中文                       

                     编码方式: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’))

猜你喜欢

转载自www.cnblogs.com/ITdong-1/p/9286098.html
今日推荐