字符编码

字符编码

一、计算机基础

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编码的变量
原文地址:https://www.cnblogs.com/yanjiayi098-001/p/11315942.html