Python 基础关于编码

时间:2022-04-07 16:19:05

一、编码的种类:

1 acsic码   基本不用    不同编码之间互用会产生乱码,

2unicode       A 字母  4个字节   00000000 00000000 00100100 01000000

        中 文    4个字节    00000000 00000000 00100100 00000000

3utf-8 中文         A 字母  1个字节      00000001   

        欧  洲  2个字节     00000000 00000000 00100100 00000000

       亚洲  中文 3个字节    00000000 00000000 00000000 00100100 00000000

       

4 gbk             A  字母 2个字节        00000000 00001000

      中文  亚洲  2个字节    00100100 00000000

二: 字节(bytes)和 字符串 (str)的区别:

bytes :表现形式:    s =  ‘Q’   b1 = s.encode ('utf-8')   print (b1)   b1 = b'Q'  

   内部存储是(utf-8 ,gbk ,gb232等)

     s1 = '晓梅'

    b11 = s1.encode('utf-8')

表现形式: s = b'\xe6\x99\x93\xe6\xa2\x85' (utf-8,gbk,gb2312.....)010101

             0000 1000 0000 0000 0000 0001 0000 1001 0000 0000 0000 0001
注意:在utf-8 的情况下b 后边有6个 (e6 99 等) 说名 晓梅 是中文 utf-8 是两个字6个字节
     s2 = '晓梅'
     b22 = s1.encode('gbk')
print(b22)
b'\xcf\xfe\xc3\xb7'
表现形式: s = b'\xcf\xfe\xc3\xb7' (utf-8,gbk,gb2312.....)010101
0000 1000 0000 0000 0000 0001 0000 1001
    注意:在gbk 的情况下b 后边有4个 (cf xf 等) 说名 晓梅 是中文 ggbk 是两个字4个字节
str  的表现形式  s = "wangyan'  内部存储是(Unicode)

id(内存地址)  ==是比较的值   is是内存抵制的比较 
   列表 字典 元祖 set 内存地址都是不一样的
      于int 小数据池
int : 范围:-5---256 创建的相同的数字,都指向同一个内存地址。空格除外
str : 字符串一般都指向想同的内存地址,空格除外。

s = 'alex'
print (s,type(s))
print(s,type(s),id(s)) alex <class 'str'> 51749664 如果s1 = s2 = 'wangyan'
print(s1 = s2)
print(s1 is s2)

       于int 小数据池
int : 范围:-5---256 创建的相同的数字,都指向同一个内存地址。