ASCII,unicode,utf8,gbk, gb2312 ...

ASCII(American Standard Code for Information Interchange)美国标准信息交换编码

ASCII是一套编码标准,用7位二进制数(也就是一个字节内)表示128个字符,这128个字符包括 数字0-9、大小写英文字母、标点符号、以及一些控制字符,比如:tab,回车,删除,换行等。

Unicode(Uniform Code)

Unicode也是一套编码标准,因为ASCII的局限性,没法表示比如汉字,日语等非拉丁语系(基于26个英文字母)的单字,所以有了Unicode编码标准。
Unicode(用两个字节)为每一种语言的每一个字符设立了统一并且唯一的二进制编码,以满足跨地区、跨国家的文本交换、处理需求。

utf-8(Unicode Transformation Format)通用转换格式

Unicode的一种实现。同类型的还有utf-16,utf-32。 utf-8用一到四个字节的空间来存储一个字符。

国内的一些编码标准

GB2312(国标2312)
汉字编码标准,是对ASCII的中文扩展
GBK(国标扩展)
收录了中日韩各种字符的编码标准,是对GB2312的扩展
GB18030
增加了少数民族字符的编码标准

时间表

ASCII 1967年首次发布
GB2312 1980年
Unicode 1991年
GBK 1995年
GB18030 2000年

python2和python3编码区别

python2默认是采用ASCII编码的,如果要使用unicode编码, 需要在str前加字符 u, 如
u'this is unicode str'
如果在文件头申明了编码方式,比如这样
 #coding:utf-8
那么python2文件在内存里就会用你所声明的编码格式编解码。 python3则默认是采用unicode编码的。