龙空技术网

Python -- 字符编码

老王的日志 42

前言:

现在姐妹们对“pycharm声明编码”都比较珍视,你们都想要分析一些“pycharm声明编码”的相关资讯。那么小编也在网络上收集了一些对于“pycharm声明编码””的相关知识,希望同学们能喜欢,姐妹们一起来学习一下吧!

1.计算机基础:应用程序、操作系统、硬件

应用程序:任何操作硬件的请求都需要向操作系统发起系统调用,然后由操作系统去操作硬件

启动应用程序:双击qq操作系统接受指令然后把该操作转化为0和1发送给CPUCPU接受指令然后把指令发送给内存内存接受指令把指令发送给硬盘获取数据qq在内存中运行2.文本编辑器存取文件的原理:打开编辑器就打开了启动了一个进程,是在内存中的,所以,用编辑器编写的内容也都是存放与内存中的,断电后数据丢失。要想永久保存,需要点击保存按钮:编辑器把内存的数据刷到了硬盘上。在我们编写一个py文件(没有执行),跟编写其他文件没有任何区别,都只是在编写一堆字符而已。3.写文本的流程:在记事本中按下键盘中j的时候记事本和操作系统交互,把这个按下j的指令转化为0和1操作系统发送给指令给CPUCPU说把这个0和1的指令转化为j然后再由显示器显示期间发生的转化过程我们称之为字符编码

j---->0和1 #存储

0和1--->j #取

统称为字符编码

4. 什么是字符编码?

计算机只认识数字。

​ 但是,我们平时在使用计算机时,用的都是人类能读懂的字符(用高级语言编程的结果也无非是在 文件内写了一堆字符)。

​ 让计算机读懂人类的字符,必须经过一个过程:

字符 -------->翻译过程 ------->数字

​ 总而言之,字符编码是将人类的字符编码成计算机能识别的数字,这种转换必须遵循一套固定的标准,该标准无非是人类字符与数字的对应关系,称之为字符编码表。

5. 涉及到字符编码的两个场景一个Python文件中的内容是由一堆字符组成的,存取均涉及到字符编码问题(Python文件并未执行,前两个阶段均属于该范畴)。Python中的数据类型字符串是由一串字符组成的(Python文件执行时,即第三个阶段)。6. 字符编码发生在哪三个阶段存: 内存到硬盘取: 硬盘到内存Python3解释器解释最早我们的电脑只认识英文,256个足够用了,8位二进制位作为一个对应表,称之为ASCII表7. 字符编码的发展史(utf8的由来):电脑是美国创造出来的,电脑只认识0和1,但是美国人想输入一个a字符进去,所以必须得建立一套字符编码,让0011100表示成a,建立一套ASCII码表但是其他国家也开始使用电脑了,ASCII码表不能满足需求了,所以各个国家建立了自己的字符编码表各个国家的码农都用自己国家的编码表写了各种各样的代码但是每个国家自己的编码表只适合自己用,别人用会报错研制出了Unicode,Unicode能认识所有国家的字符,可以使用Unicode的编码保存到硬盘中,但是Unicode的编码太浪费内存,最后做出了一套精简的utf8编码备注:上述说到的报错其实就是乱码8. ding: utf-8 控制的是Python3作为文本编辑的时候以什么编码格式读取文本内容,python3默认是utf-8的形式读取字符python解释器解释语法

解释定义变量的语法,会新开辟一块内存空间放入这个变量,然后假设这个变量在python3中以utf-8的形式存储,如字符x = '中',被python3解释后在内存中会变成x=000001101010.理论上print(x)相当于输出000001101010,但是这个000001101010对于程序员来讲看不懂,所以python3创始人龟叔做了这个操作-把000001101010编码按终端的编码格式输出编码后的结果,如上.如果终端的编码为gbk,终端无法识别000001101010.所以新开辟空间放入变量的时候,就用unicode转换,则终端无论是什么形式的编码格式,都能够识别并打印.

9. 乱码分析:

首先明确概念

文件从内存刷到硬盘的操作简称存文件文件从硬盘读到内存的操作简称读文件

乱码的两种情况:

乱码一:存文件时就已经乱码乱码二:存文件时不乱码而读文件时乱码

存文件时用utf-8编码,保证兼容万国,不会乱码,而读文件时选择了错误的解码方式,比如gbk,则在读阶段发生乱码,读阶段发生乱码是可以解决的,选对正确的解码方式就ok了。

总结(掌握)保证不乱码的核心法则就是,字符按照什么标准而编码的,就要按照什么标准解码,此处的标准指的就是字符编码。内存中的编码格式统一都是unicode从内存到硬盘的过程,即Unicode--->encode(编码)----->gbk 称为编码;从硬盘到内存的过程,即gbk---->decode(解码)----->unicode称为解码pycharm 右下角控制的是你写入的代码字符以什么编码格式保存在内存中写的所有字符,一视同仁,都是Unicode编码,比如我们打开编辑器,输入一个“你”,我们并不能说“你”就是一个汉字,此时它仅仅只是一个符号,该符号可能很多国家都在使用,根据我们使用的输入法不同这个字的样式可能也不太一样。只有在我们往硬盘保存或者基于网络传输时,才能确定”你“到底是一个汉字,还是一个日本字,这就是Unicode转换成其他编码格式的过程了。简而言之,就是内存中固定使用的就是Uncidoe编码,我们唯一能改变的就是存储到硬盘时使用的编码。字符编码应用之Python1.Python解释器的原理:启动Python解释器,Python解释器相当于一个文本编辑器0000打开文件,读出文件的内容,Python解释器相当于一个文本编辑器。--->发生了字符编码name='jick'Python解释器解释name='nick',然后才有语法的概念。--->发生了字符编码 00000000000(硬盘中)----->name='nick'(内存)----->开辟一块内存空间---->000010102.Python解释器和文本编辑器的区别都能干什么:​ 把硬盘中躺着的数据读入到内存中,并显示不同:​ Python解释器还会多执行解释的步骤3.python3

​ Python3中str都是Unicode编码的,所以Python3中的str类型的数据可以编码成其他字符编码的格式,编码的结果为bytes类型。

​ 很重要的一点是:看到Python3中x.encode('gbk') 的结果\xc9\xcf正是Python2中的str类型的值,而在Python3是bytes类型,在Python2中则是str类型。

标签: #pycharm声明编码