字符编码

字符编码

字符编码就是二进制和字符的映射关系

文本编辑器存取文件的过程

  1. 打开编辑器就是启用动了一个进程,进程就是在内存里的,所以写的内容就在内存里,断电了数据就会消失
  2. 保存之后,编辑器就会把内存的数据记录在硬盘上
  3. 我们平时写的py文件,与编写其他文件没什么不同,就是写了一堆字符

python解释器执行py文件的原理

  1. python解释器启动,此时就相当于启动了一个文本编辑器
  2. python解释器就相当于一个文本编辑器,打开了一个py文件,也就是从硬盘上把文件内容读入到内存中
  3. python解释器执行刚刚加载到内存中的代码

python解释器与文本编辑器的异同

相同点:python解释器是解释执行文件内容的,因而python解释器具备py文件的功能,这一点与文本编辑器一样。

不同点:文本编辑器将文件内容读入内存后,是为了显示或者编辑,根本不会在意python的语法,而python解释器将文件内容读入内存之后,会识别Python语法。

什么是字符编码

计算机只认识0和1,而我们现在输入的字符计算机是不认识的,必须要经过一个转换过程使得计算机识别人类的字符:

字符……翻译过程……数字

反正就是有这样的一种对应关系,能实现人类字符与数字的对应关系,这玩意称为字符编码表

字符编码发展史和分类

早期的计算机是美国人搞出来的,搞了一个ASCII表,但这只是美国的标准,而其他国家不能用。因为此刻的各种标准都只是规定了自己国家的文字在内的字符跟数字的对应关系,如果单纯采用一种国家的编码格式,那么其余国家语言的文字在解析时就会出现乱码。

ASCII

接着万国编码Unicode应运而生,但是在纯英文字符中发现,Unicode比ASCII多一倍的空间,这样UTF-8就出现了。

字符 ASCII Unicode UTF-8
A 01000001 00000000 01000001 01000001
x 01001110 00101101 11100100 10111000 10101101

总结

以上这些基本是废话,记住以下两句话就够了:

  • 内存中unicode取,用utf8存入硬盘,现在全世界的人写代码/写文件都是utf8
  • 用什么编码写,就用什么编码读

python2与python3的编码区别

python2默认用ASCII读入字符,python3默认用utf8读入字符

python2

python2有两种存储变量的形式:

  • Unicode , u'中'
  • 按照coding头

python3

python3只有一种存储变量的形式:Unicode

原文地址:https://www.cnblogs.com/setcreed/p/11544697.html