字符编码

前置知识点:

1、程序执行的三大核心硬件(***):

cpu

内存

硬盘

正常执行一个程序的要点:

1、将硬盘中的数据读到内存

2、由cpu读内存中的数据进行执行

3、在执行程序的时候,生成的数据,优先存入内存

python解释器执行一个py文件过程(***)

如果没有python解释器,py文件单纯就是一个文本文件

所以说,想执行py文件,必须先执行python解释器

 

1、将python解释器的代码由硬盘读到内存

 

2、将py文件以普通文本文件的格式由硬盘读到内存

3、python解释器去内存中读取py文件的数据

4、识别python语法,执行相应的操作

ps:任何一个文本编辑器的执行,前两部都一样

 

字符编码:

 

字符:世界上一切语言、文字

有必要考虑,图片文件、音频文件、视频文件?

文件的输入和输出是两个过程

 

人类输入的内容都是人类自己可以识别的字符

 

计算机只能识别0101010二进制字符

将人类的字符,存入内存和硬盘,要经历一个过程:

人类的字符 >>>>>>> (字符编码表) >>>> 计算机二进制

0 a
1 b
01 a
10 b
00 c
11 d

ASCII码表(美国)
用八位二进制来代表一个英文字符(所有的英文字符+符号一共大概128左右)
0000 0000
1111 1111
最多只能表示255位


八位二进制 = 8 bit
8 bit = 1 bytes
1024bytes = 1KB
1024KB = 1MB
1024MB = 1GB
1024GB = 1TB
1024TB = 1PB

GBK(中国)
用2个bytes来代表一个字符,兼容英文字符
0000 0000 0000 0000
1111 1111 1111 1111
最多可以表示65535位

shift(小日子过得不错的日本人)

 fuck(韩国的)

万国码(unicode)

为了兼容所有的国家的字符,生成unicode
所有的字符都用2bytes
0101 0101 a
0000 0000 0101 0101 a
1、占用存储空间
2、io次数增加,程序运行速度变慢(最致命)

在unicode二进制数据存入硬盘的时候,做优化

utf-8:
utf-8只与unicode有对应关系
unicode transformation format

所有的英文字符用1个bytes表示
所有的中文字符用3个bytes表示

现在的计算机:
内存都是:unicode
硬盘都是:utf-8

需要掌握

1、用户无论输入什么字符,存入内存,unicode都可以兼容

2、硬盘中无论是什么编码的文件,读到内存,都可以兼容unicode

数据的传输:

优先以自己的本国字符编码进行传递

必须掌握(******)

(内存)unicode二进制字符 >>> 编码(encode) >>> (硬盘)utf-8二进制字符

(硬盘)utf-8二进制字符 >>> 解码(decode) >>> (内存)unicode二进制字符

 

保证不乱码核心:

用什么编码存的数据,就用什么编码取

 

=====================================================================================================================================

python2 :
默认的字符编码ascii码(因为当时的unicode还没盛行)
python3:
默认的字符编码utf-8

文件头:
# coding:utf-8
用英文字符,是为了让所有的计算机都可以识别


pycharm默认的字符编码是:
utf-8
windows操作系统默认字符编码:
gbk

 

以上就是关于字符编码的内容

posted @ 2019-11-07 18:47  小小小小小小小小小白  阅读(142)  评论(0编辑  收藏  举报