字符编码
1.内存和硬盘都是用来存储的。
CPU:速度快
硬盘:永久保存
python解释器程序的执行流程:
1.打开python解释器
2.告诉操作系统一个文件路径
3.操作系统从硬盘读取文件到内存中
4.cpu从内存中读取数据执行
2,什么是字符编码呢?
计算器只能识别0和1,识别过程就是 字符--->翻译---->数字
人类想要读懂计算机的内容,那么就要有可以表示字符与数字的对应关系的表。
第一阶段:计算机起源于美国,最早诞生ASCII码只支持英文
ASCII:8位,二进制表示一个字符(1Bytes = 8bit)
第二阶段:为了能使用中文,中国人定制了GBK,
GBK:
-
- 只支持中文,英文
- 8位,二进制表示一个英文字符(1Bytes = 8bit)
- 16位,二进制表示一个中文字符(2Bytes = 16bit)
为了满足其他国家,各个国家纷纷定制了自己的编码,日本把日文编到Shift_JIS
里,韩国把韩文编到Euc-kr
里
第三阶段:各个国家有自己的标准,就会有避免冲突出现,多个国语言混合使用则会发生乱码,于是产生了Unicode
Unicode:
-
- 万国码具有兼容性
- 通常2Bytes表示一个字符,而个别的是4Bytes 或 8Bytes
注意点:老的字符可以转换成Unicode,但是不能通过Unicode互相转换。
但是Unicode生成的数据占用的空间大,于是产生了utf-8 ,而utf-8则是万国码的压缩版。
utf-8:
-
- 1Bytes表示一个英文
- 3Bytes表示一个中文
结论:
- 内存固定使用Unicode,我们可以改变存入内存硬盘的格式 文本文件存取乱问题:
- 存乱:编码格式设置成支持文件内容的格式
- 取乱:文件以什么编码格式写就以什么格式取
保证运行Python不乱码的核心法则:
指定文件头:#coding:文件当初存入硬盘时所采用的编码格式
python2与python3的格式区别
- Python3默认格式:utf-8
- Python2默认格式:ASCII
python2与python3的 str 区别
- Python3 str 类型默认存:Unicode格式
- Python2str 类型为了不乱码在str 前加一个u