1.双击qqpython
2.操做系统接收指令,而后把该操做转化为0和1发送给CPU程序员
3.CPU接收指令而后把指令发送给内存网络
4.内存接收指令把指令发送给硬盘获取数据编辑器
5.qq在内存运行编码
1.在记事本中按下键盘中j的时候操作系统
2.记事本和操做系统交互,把这个按下j的指令转化为0和1code
3.操做系统发送指令给CPU内存
4.CPU说吧这个0和1的指令转化为jutf-8
5.而后再由显示器显示ci
j--->0和1 #存储
0和1---> j #取
统称为字符编码
1.启动python解释器,python解释器至关于一个文本编辑器00000
2.打开文件,读出文件内容,python解释器至关于一个文本编辑器,--->发生了字符编码,name='nick'
3.python解释器解释name ='nick'
,而后才有了语法的概念--->发生了字符编码00000
001001101001000101010(硬盘中)---->name ='nick'(内存)--->开辟一块内存空间--->0000001010101001010
1.都能干什么:
A.把硬盘中躺着的数据读入到内存中,并显示
2.不一样:
A.python解释器还会执行解释的步骤
1.存 内存到硬盘
2.取 硬盘到内存
3.python3解释器的解释
最先的电脑只认识英文,
00001-a 00002-b 00003-中
256个足够他们用了
0 1
00 a 01 b 10 c 11 d
8位二进制位做为一个对应表,称为ASCII表
中 0000111100001111 a 00001111
内存 unicode转换 硬盘
0000111100001111000011110 - a - 00001111
0000111100001111000111111 - 中 - 000011110000111
utf8的出现只是为了节省空间,把这个00000000 01000001改为01000001存到内存中
1.电脑是美国创造出来的,电脑只认识0和1,可是美国人想输入一个a字符进去,因此必须得创建一套字符编码,让00001111表示a,创建一套ascii码表
2.可是其余国家也开始使用电脑了,ascii码表不能知足需求了,因此各个国家创建了本身的字符编码表
3.中国的是gbk,日本的是ift,韩国的是uck,因此各个国家的码农都用本身国家的编码表写了各类各样的代码
4.忽然某个韩国人想说某个日本人的代码是本身写的,可是把日本人的代码放到本身的电脑上运行会报错,一下就被揭穿了,因此这个韩国人站出来讲,我要弄一套编码表,这个编码表不只能兼容日本,还能兼容世界的,而后最终没能实现
5.忽然有一个超级英雄站出来讲,我来帮你吧,而后unicode横空出世,unicode能认识全部国家的字符
6.而后可使用unicode的编码保存到硬盘中取,可是发现unicode编码太浪费内存了,而后作出了一套精简的utf8编码
7.等哪一天硬盘中躺着的全是utf8的编码的代码,那么unicode就下岗了
存的时候用什么编码,取的时候用什么编码(必考)
内存中的编码格式统一就是unicode
从内存到硬盘的过程,即unicode--->gbk称为encode
从硬盘到内存的过程,即gbk--->unicode称为解码decode
解释语法的时候,生成变量时会把这个字符丢入到内存中,这个时候会有两种状况,一种是str编码,一种是unicode编码
直接编码成gbk的形式
直接编码成unicode的形式
pycharm右下角控制的是你写入的代码字符以什么编码格式保存
python解释器的语法
解释定义变量的语法,会新开辟一块内存空间放入这个变量,而后这个变量在python3中以unicode的形式存储,如字符x='中',
被python3解释后在内存中会变成x=1010101010101100,理论上print(x)
至关于输出1010101010101100,可是1010101010101100对于程序员来说看不懂,因此python3创始人龟叔做了这个操做,把1010101010101100编码按终端的编码格式输出到编码后的结果上,如上
.
解释定义变量的语法,会新开辟一块内存空间放入这个变量,而后假设这个变量在python3中以utf-8的形式存储,如字符x=中
,被python3解释后在内存中会变成x=000001101010
.理论上print(x)至关于输出000001101010
,可是这个000001101010
对于程序员来说看不懂,因此pyhon3创始人龟叔做了这个操做-把000001101010
编码按终端的编码格式输出编码后的结果,如上
,若是终端的编码格式是gbk,终端没法识别000001101010
,因此新开辟空间放入变量的时候,就用unicode转换,则终端不管是什么编码格式,都可以识别打印。
乱码的两种状况:
存文件时,因为文件内容有各个国家的文字,咱们单以shiftjis去存,本质上其余国家的文字因为在shiftjis中没有找到对应关系而致使存储失败。但当咱们硬要存的时候,编辑并不会报错(难道你的编码错误,编译器这个软件就跟着崩溃了吗???),但毫无疑问,不能存而硬存,确定是乱存了,即文件阶段就已经发生乱码,而当咱们用shiftjis打开文件时,日文能够正常显示,而中文就乱码了。
一、保证不乱码的核心法则就是,字符按照什么标准编码的,就要按照什么标准解码,此处的标准指的就是字符编码
二、在内存中写的全部字符,一视同仁,都是unicode编码,好比咱们打开编译器,输入一个“你”,咱们并不能说“你”就是一个汉字,此时它仅仅只是一个符号,该符号可能不少国家都在使用,根据咱们使用的输入法不一样这个字的样式可能也不太同样。只有咱们往硬盘保存或者是基于网络传输时,才能肯定“你”究竟是一个汉字,仍是一个日本字,这就是unicode转换成其余编码格式的过程了。简而言之,就是内存中固定使用使用的就是unicode编码,咱们惟一能改变的就是存储到硬盘时使用的编码。