目录
字符编码
文本编辑器存储信息的过程
- 打开编辑器就在内存中打开了一个进程,用编辑器编写的内容存在内存中,断电会丢失。
- 点击保存,编辑器把内存的数据刷到了硬盘上。
- 编写.py文件(没有执行时)和编写其他文件没有区别,只是在写一堆字符。
python解释器解释python代码的流程
- 第一阶段:python解释器启动,这时相当于启动了一个文本编辑器。
- 第二阶段:python解释器相当于文本编辑器,打开test.py文件,从硬盘将test.py文件从硬盘读入到内存中(python的解释性决定了解释器只关心文件的内容,不关心文件的后缀)。
- 第三阶段:python解释器解释执行加载到内存中的test.py代码。在该阶段才会识别python语法,为变量值等开辟存储空间。
python解释器与文本编辑器的异同
- 相同点:python具备读取.py文件的功能,这与文本编辑器一样。
- 不同点:读取文件之后两者的目的不同,文本编辑器将文件读入内存后为了显示和编辑,python解释器是为了执行Python代码,所以会识别代码的语法。
不同编码格式存入与读取数据的过程
utf-8编码格式只能和Unicode格式相互转换,不能和其他编码格式转化
乱码的分析
-
存文件是乱码
用中文的编码格式存储日文等其他国家的文字则会导致存入的二进制位并不对应要存的语言的字符,从而导致存入时就会出现乱码。
-
读文件时乱码
读文件时如果读取采用的编码格式与文本原来的编码格式不同则会导致出现乱码,如用gbk读取ASCII编码的文件
总结
要想不出现乱码,文件中的字符按什么标准编码,就用什么标准去读取文件(解码)。由于内存中固定使用Unicode编码,我们只能改变存储到硬盘时使用的编码格式。
python2和python3字符编码的区别
python2
python2有两种存储形式,第一种:Unicode;第二种:按coding头选择存储格式,假设python2用utf8存储x='中文'
,当你print(x)
的时候,终端接收gbk的变量x,但是windows终端编码是utf8,会乱码。
python3
python3只有Unicode一种存储变量的形式。Python2中默认使用ascii,Python3中默认使用utf-8,文本编辑器编写的文件默认为gbk编码格式。