定义
编码是信息从一种形式或格式转换为另一种形式的过程。解码,是编码的逆过程。
字符编码(Character encoding)是一套法则,使用该法则能够对自然语言的字符的一个集合(如字母表或音节表),与其他东西的一个集合(如号码或电脉冲)进行配对。
计算机因为物理特性,只能识别高低压,即:“010100” 这样的二进制;为了识别人类的自然语言,美国人于1963年开发了一套Ascii码。这是最开始的字符编码。
计算机传入中国后,中国人在Ascii基础上,往后开发了GB2312,但是字数只有六千多。后来,为了发展需要,又制作了GBK标准。
国际标准化组织为了统一编码,提出了标准编码准则:UNicode;但是由于unicode占用的空间较大,又在这基础上进行改善,制作了UTF-8(8-bit Unicode Transformation Format),它是一种针对Unicode的可变长度字符编码,可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度,当字符在ASCII码的范围时,就用一个字节表示,所以是兼容ASCII编码的。
Unicode是内存编码表示方案(是规范),而UTF是如何保存和传输Unicode的方案(是实现)这也是UTF与Unicode的区别。
unicode:英文字符占2字节,中文占2字节
utf-8:英文字符占1字节,中文占3字节
GB2312:英文字符占1字节,中文占2字节
python2和python3
py2有两种字符串类型:
str类型:bytes(二进制)形式存储在内存
unicode类型:unicode(二进制)形式存储在内存中
s1 = “北京” bytes类型
s2 = u“北京” unicode类型
repr()
p2默认为ascii码解码
py3也有两种字符串类型:
str类型:以unicode形式(一种二进制)存储在内存中
bytes类型:bytes形式(一种二进制)存储在内存中
s1 = "上海" uncide形式储存
s2 = b“上海” bytes形式储存,只能识别ascii码,这个print(s2)会报错 bytes can only contain ASCII literal characters.
p3默认为utf-8码解码
win的操作系统安装时是默认的gbk编码,而linux操作系统默认的是utf8编码