python基础学习-字符编码

#__author:"Feng Lin"
#date: 2018/8/26
#赋值 ==比较是否相等 is 比较内存地址 id(内容)
li1=[1,2,4]
li2=li1
li3=li2
print(id(li2),id(li3))
print(li2 is li3)


# #python2中细节
# #数字,字符串,小数据池,节省内存空间
# #数字的范围-5 -----》256之间不新开辟内存空间
# a=6
# b=6
# print(id(a),id(b))
# print(a is b)
# a=500
# b=500
# print(id(a),id(b))
# print(a is b)
# #字符串: 1.不能含有特殊字符
# #         2.s*20还是同个地址,但是s*21超过20开辟新内存空间
# a='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
# b='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
# print(a is b)

#字符编码
# ascii:
#         A: 000000010  8位  一个字节
#
# unicode:
#         A: 00000000  00000001  000000010  00000100  32位  四个字节
#         中: 00000000  00000001  000000010  00000100  32位  四个字节
# utf-8:
#         A: 0010 0000 8位 一个字节
#         中: 00000001 00000010  00000110  24位一个字节
#
# gbk:
#         A: 00000110  8位 一个字节
#         中:  00000010  00000110  16位 两个字节
#1,各个编码之间的而二进制不能相互识别,会导致乱码
#2,文件的存储和传输,不能用unicode(只能用utf-8,utf-16,gbk,gb2312,asciid等)


#python3中,str用unicode存储
       # bytes类型
       # 对于英文:
       #      str:  表现形式:s='alex'
       #            编码方式: 01010101  unicode
       #      bytes:表现形式:s=b'alex'
       #            编码方式: 00001010  utf-8 gbk ...
       #
       # 对于中文:
       #      str: 表现形式:s="中国"
       #           编码方式: 01010101  unicode
       #
       #      bytes: 表现形式:s=b'x\e91\e91\e01\e02\e32\e31\'
       #              编码方式: 01011010 utf-8,gbk...

#encode编码,将str---->bytes用于传输和存储,否则uncode太大,不利于存储和传输
#将英文encode
s='linfeng'
s1=s.encode('utf-8')
s2=s.encode('gb2312')
print(s1,"\n",s2)
#将中文encode
x="中国"
x1=x.encode('utf-8')
x2=x.encode('gbk')
print(x1,"\n",x2)

 

posted @ 2018-08-26 17:47  啦啦啦嘻嘻嘻  阅读(153)  评论(0编辑  收藏  举报