计算机是不能直接保存字符的,只能保存二进制数,哪怕写成字节的形式,也只是一个0~255的数字
早期更适合计算机处理和显示的字符集----ASCII码
可显示字符(参考书82页)
在python中可以使用chr()函数将一个ASCII码可显示字符转化为其对应的数字,使用ord()函数进行反向转换【注意ord()函数一次只能转换一个字符】
字节串的字面量----将一个字符串转换为若干个字节,其中每一个字节对应一个字符。【注:只能保存ASCII码中存在的字符,以及十六进制码。书写时,需要在字符串前加字母b(大小写都可)】
我国自行研发两种更适合中文的字符集----GB2312码(包含ASCII码)和GBK码(包含GB2312码)
在ASCII码中,每一个字符用7位表示,而在GB2312码和GBK码中,每一个字符用16位表示,所以,采用GBK码或GB2312码保存的文件,使用ASCII码方式打开时都会显示乱码
encode()是编码函数,作用是将源字符串按照一定的编码规则转换为字节串字面量
decode()是编码函数的反函数,作用是把字节按照编码规则反向地转换为对应字符。故称为“解码函数”
Unicode字符集是ASCII码的扩展形式,包含了世界上大多数语言所需要用到的字符。分为UTF-8、UTF-16和UTF-32
ASCII码和Unicode都是字符集,都是为每一个字符分配一个码位,而UTF-8、UTF-16等都是针对Unicode字符集的“编码规则”,也就是将每一个“码位”转换为字节序列的规则
与ASCII码相同,在字符串中也可以直接使用Unicode码书写字符,这是需要使用转义字符“\u579D”,其中,“\u”后面接的4个十六进制字符代表2个字节
再次强调,Unicode码与保存到文件中的、使用UTF-8转换过的二进制位是不一样的,一定要注意区分【编码规则----“UTF-8”,码表或者字符集----“Unicode”】