字符编码
二进制
--->ASCII :只能存英文和拉丁字符。一个字符占一个字节,8位
------>gb2312 :只有6700多个中文, 1980
--------->gbk1.0 :存了两万多个字符, 1995
------------>gb18030 :2000, 27000中文
------------>unicode :utf-32:一个字符占4个字符
--------->unicode :utf-16:一个字符占2个字符以上,最多65535最多
--------->unicode :utf-8:一个英文用ASCII存,一个中文占三个字节
python 2 里面
默认ASCII码,所以没有申明使用别的解码方法,例如
# -*- coding: utf-8 -*-
则识别不出来中文,因为ASCII只有拉丁字符
这个时候就需要转码了,通过转成unicode
即:
ASCII——encode(编码)——》unicode——decode(解码)——》GBK
python 3 里面
默认是utf-8
a='''
好好味
'''
a1=a.encode('utf-8')
print(a1)
输出结果为
b'\n\xe5\xa5\xbd\xe5\xa5\xbd\xe5\x91\xb3\n'
开头的b代表byte,即一种字节类型
encode在编码的同时,会把数据转成bytes类型
像中文这种ascii码里面没有的特殊字符,转码的时候是用多个ascii码内字符表示的,而英文就没有这一情况,因为英文本身就在ascii码中。