Python 之 字符串编码
计算机只认识数字。然而,我们平时在使用计算机时用的都是人类能读懂的字符。如何能让计算机能够读懂人类的字符?
字符-------------------(翻译过程)--------------------数字
所谓字符编码,就是一个字符如何对应一个特定数字的标准。字符编码发展的三个阶段:
1、ASCII码:一个Bytes代表一个字符,1Bytes=8bits,8bit可以表示0~2^8-1种变化(即可以表示256个字符)。 最初只用了后7位,已经完全能够表示键盘上所有的字符了。 后来为了将拉丁文也包含进ASCII表,将最高位也占用了。
2、为了满足中文和英文,中国人制定了‘GBK’。2Bytes代表一个中文字符,1Bytes代表1个英文字符。 为了满足自身的需要,各国也纷纷制定自己的编码。
3、各国有各国的标准,就会不可避免地产生冲突,就会产生乱码,乱码问题的本质就是不统一。解决这个问题?
统一全世界?不现实 unicode(万国码)(定长) unicode统一用2个Bytes代表一个字符。 对于全篇都是英文的文本来说,Unicode编码无疑是多了一倍的存储空间。 于是就产生了UTF-8(可变长,Unicode Transformation Formate),对英文字符只用1Bytes表示,对中文字符则用3Bytes表示,其他生僻字用更多的Bytes去存。 目前的现状:内存中的编码固定就是unicode,唯一可变的就是硬盘上对应字符的编码。
总结:
1、 在存入磁盘时,需要将unicode转换成一种更为精准的编码格式:utf-8,将数据量控制到更精简。
2、在读入内存时需要将utf-8转成unicode