字符编码
一、计算机基础
1、cpu:控制程序的运行(从内存中取出文本编辑器的数据读入内存)
2、内存:运行程序(经CPU操作后,内存中含有文本编辑器的数据)
3、硬盘:存储数据(文本编辑器)
二、文本编辑器
计算机只认识0和1
文本编辑器的作业:读写数据,保存数据
三、python解释器
具有文本编辑器的功能
01010110101
--> a = 1 #很普通的字符,python解释器没有运行的时候提供的。字符编码
a=1 --> 01010110101
#需要一定的0和1表示他为字符串,python解释器运行的时候提供的。
四、字符编码
二进制和你所能认识的字符之间的相互转换的过程
unicode: 认识万国语言,万国编码,他把 8位的英文变成了16位的英文, 多占用了内存空间,此时utf8对Unicode做了优化,减小了内存占用,但是utf8并不认识各个国家的字符编码。
五、什么情况会出现乱码
编码格式不统一
举个栗子
#文本编辑器支持的是utf8 ,你输入的是gbk --> 文件的存储
#文件存储用了utf8 ,但是下次打开用了gbk --> 文件的读取
六、乱码的两种情况
举个栗子
#中文的文本编辑器只认识中文,然后输入了日文 --> 乱码 # encode 编码
#文本编辑器存储了中文(文件),但是用日本的编辑器打开这个文件 --> 乱码 # decode 解码
七、怎样解决乱码
什么格式存储,就什么格式读取
ps:windows电脑的记事本默认为gbk编码,除此之外其他的软件默认编码为utf8
八、python2和python3的区别
8.1 python解释器运行代码的流程
1. 启动python解释器(相当于文本编辑器)
2. 打开文件,显示这个字符并检查语法(涉及字符编码),相当于一个文本编辑器,从硬盘把test.py文件的内容读入内存,读取test.py中的内容。
3. 执行刚刚从硬盘中获取的内容,解释字符 (生成变量就开辟内存空间存放变量,存放变量存放到内存中,涉及字符编码)
8.2 区别
python2 | python3 |
---|---|
unicode + 指定的coding编码(str类型) | unicode+终端 |
python2:
# coding:gbk
a = '中文' # 用gbk编码存储了这堆0和1
a = u'中文' # 用unicode编码存储了这堆0和1 #加“u”是为了告诉解释器文件类型是utf8,不然就会乱码
print(a)
python3:
# coding:gbk
a = '中文' # 用unicode编码存储了这堆0和1
print(a) # 010101010
终端是一个文本编辑器,会有默认编码
终端 |
---|
假设终端的默认编码是gbk , 认识 unicode编码的变量 |
假设终端的默认编码是utf8,认识 unicode编码的变量 |
假设终端的默认编码是gbk , 认识 gbk编码的变量 |
假设终端的默认编码是utf8, 不认识 gbk编码的变量 |