1. 编码方式

一、

1.unicode只是一种编码方式。

 ASCII码:只使用了7个比特位,127个字符   ——————> 美国——占 1 个字节

 扩展ASCII码:使用了8个比特位,256个字符  ——————>拉丁——占 1 个字节

 中文扩展ASCII码(GB2312):把拉丁的给霸占了,根据2个字节分别使用情况变化,几千个字符————>中国 —— 占 2 个字节

 中文扩展ASCII码(GBK):根据第一个字节的使用情况变化,两万多个字符  —————>  中国 --- 占 1 个字节

 Unicode(万国码):六七万个字符 ——— 全世界 ---- 都是 2 个字节,包括美国佬的英文。

 UTF8(美国佬伤不起,在万国码基础上改进成能伸能缩的编码方式):

  英文1个字节,非英文考虑两个或三个,中国变成3个字节了!坑!

2.编码与解码。

我们向软件输入文字并保存的过程(编码过程):

其实是软件通过操作系统调用cpu将你的明文字符读到内存,在内存里CPU将明文解码(decode)unicode编码方式的二进制,所以此时内存里存储的都是unicode(针对目前操作的文件而言),只有在传输或者向磁盘里保存数据时,cpu将内存里的unicode编码方式的二进制编码(encode)成utf8编码方式(也可能是其他编码方式)的二进制数,然后写到硬盘上(因为unicode占容量大)。

文件存的过程:unicode编码将明文——>unicode形式的二进制——>utf8形式的二进制——>磁盘

文件读的过程:

utf8(或者其他编码方式)它不能直接将二进制转化成明文,所以:

utf8二进制——>unicode二进制(在内存里进行)——>明文

3.按什么编码方式编就用什么编码方式解。

  所以一般都会开头声明用什么方式解码:例如 #coding:utf8(或者其他方式)。

二、

  注意点:1 unicode,utf8,gbk都是编码规则。

      2 为什么内存存储的是unicode。
      3 程序执行前和执行后两个状态。

原文地址:https://www.cnblogs.com/mrpengfei/p/6659588.html