字符编码
一、在学字符编码之前需要先回忆一下之前的两个知识点
1.计算机的内部分层: 2.执行Python程序的三个阶段:
(应用程序层) (首先运行Python解释器)
(操作系统层) (其次将Python文件当做普通的文本文件由硬盘读入内存)
(计算机硬件层) (Python解释器开始解释执行刚刚读入内存中的文件并开始识别Python语法)
二、字符编码的介绍及应用
1.什么是字符编码?
首先,想要使用计算机必须要通过电,也可以说是用电才驱使计算机去工作,也就是说电的特性决定了计算机的特性,而电的特性即高低电平,人类将二进制数1对应高电平,将二进制数0对应低电平,而关于磁盘的磁特性也是一样的道理,所以得出结论,计算机是只认识数字的。我们平时在使用计算机做各种事的时候用的大都是人类所认识的字符,计算机是不可以直接进行识别的,所以这中间就需要一个转换的过程,将人类所用的字符转换成数字来达到使用计算机的目的。这个转换过程其实就是一个字符对应计算机上的一个字符,这个标准就称之为字符编码。
2.为什么要使用字符编码?
因为计算机不能直接识别人类的语言,所以需要一个转换的过程来让计算机能够识别人类语言。
3.如何使用字符编码
首先我们来说一下几种常见的字符编码类型
⑴ASCII
由于计算机是美国发明的,所以当时美国在做字符编码表的时候并没有考虑到能够将其他国语言转换成二进制(bytes),所以ASCII类型只能将英文转换为二进制。
⑵GBK
随着时间发展,我们中国也有了属于自己的字符编码表(GBK),它不仅可以识别中文,也可以识别英文。
⑶Shift-JIS
日本的字符编码,可转换日文
⑷Euc-Kr
韩国的字符编码,可转换韩文
⑸.Unicode
很多地方或老的系统,应用软件仍会采用各种各样的编码,这是历史遗留问题,需要强调的是,软件是存放于硬盘的,而运行软件是要将软件加载到内存,面对硬盘中存放的各种编码的软件,想让我们的计算机能够将他们全部都正常运行而不出现乱码的话,内存中就必须有一种兼容多个国家的编码,并且该编码需要与其他编码有相对应的映射或转换关系,这就是Unicode。
⑹.UTF-8
基于目前的现状,内存中的编码固定就是unicode,我们唯一可变的就是硬盘的上对应的字符编码。
但是如果我们以后开发软件时统一都用unicode编码的话,耗费的空间几乎会多出一倍,这样在软件读入内存或写入磁盘时,都会徒增IO(输入输出)次数,从而降低程序的执行效率。所以我们以后在编写程序的文件时应该统一使用一个更为精准的字符编码utf-8(用1Bytes存英文,3Bytes存中文),再次强调,内存中的编码固定使用unicode。UTF-8的作用就是在存入磁盘或硬盘的时候,会将unicode转成一种更为精准的格式,从而将数据量控制到最精简。
重点
1.编码与解码
字符---编码-->unicode的二进制-------编码----->GBK的二进制 GBK的二进制-----解码-->unicode的二进制----解码->字符
2.解决乱码问题的核心法则
字符用什么编码类型编码的,就用什么编码类型进行解码
3.Python解释默认的字符编码
Python2中默认的字符编码为ASCII 注:通过文件头可以修改Python默认的解释器字符编码
Python3中默认的字符编码类型为UTF-8 在文件首行写coding: 文件当初存的时候使用的字符编码
4.如何使用字符编码
在Python中可以运用incode与decode来进行编码和解码