字符编码
程序执行的三大核心硬件:
CPU,内存,硬盘
正常执行一个程序的要点:
1.将硬盘中的数据读取内存
2.由cpu读取内存中的数据进行执行
3.在执行程序时,生成的数据优先存入内存
python解释器执行一个py文件过程:
如果么有python解释器,py文件就是一个文本文件,执行py文件,先执行python解释器
1)将python解释器的代码由硬盘读入内存
2)再将py文件以普通文本文件格式由硬盘读入内存
3)python解释器去内存读取py文件的数据
4)识别python语法,执行相应的操作
ps:任意的文本编译器执行,前面两步一样
字符:是世界上一切的文字,语言
将人类的文字,存入内存和硬盘中:
人类字符 ——》 字符编码表——》计算机二进制
字符编码表
ASCII码表 (美)
用八位二进制来代表一个英文字符
八位二进制,最多表示255位
八位二进制 = 8bit
8 bit = 1 bytes
1024B =1MB
1024MB = 1G
1024GB = 1TB
1024TB = 1PB
GBK(中)
用两个bytes来代表一个字符,兼容英文字符
shift(日本)
fuck(韩国)
unicode: 万国码
为了兼容所有的国家的字符
所有的字符都是用2bytes
缺点:
1.占用存储空间
2.io次数增加,程序运行速度变慢
utf8
只用Unicode对应:
所有的英文字符用一个bytes表示:
中文 用三个bytes
在unicode二进制数据存入硬盘的时候,做优化:
现在的计算机:
内存:unicode
硬盘:uft-8
(内存)Unicode二进制——》编码(encode)——》硬盘utf-8二进制字符
硬盘utf-8二进制字符——》解码(decode)——》unicode二进制
保证不乱码的核心:
用什么编码存的数据,就用什么编码取出来
1.用户不论输入的是什么字符,存入内存,unicode都可以兼容
2.硬盘中无论是什么编码的文件,读到内存,都可以兼容unicode
数据传输:
优先以自己本国的语言
python2:
默认的字符编码ASCII码
python3:
默认的utf-8
文件头:
# coding = utf—8
用英文字符,是为了让所有的计算机都可以识别
pycharm默认的字符编码:
utf-8
中国的windows操作系统默认字符编码:
gbk
x = '你好美' res = x.encode('utf-8') print(res) res1 = res.decode('utf-8') print(res1) b'\xe4\xbd\xa0\xe5\xa5\xbd\xe7\xbe\x8e' 你好美