11.编码与二次编码

二次编码

编码类型

ASCII:不支持中文,英文1个字节

gbk : 英文1字节, 中文2字节

unicode: 中英都占4个字节****

utf-8: 英文1 欧洲 2 亚洲 3个

重点

编码:上锁

解码:开锁

例:

s = '你好'

s1=s.encode('utf-8')  #编码

print(type(s1))    # 结果为字节类型 bytes

print(s1)

s2= s1.decode('utf-8')    #解码

print(s2)

文件存储和网络传输使用的都是字节

s ='你好,世界'
s1= s.encode('gbk')
s2= s1.decode('gbk')
print(s1)
print(s2)
结果:
b'xc4xe3xbaxc3xa3xacxcaxc0xbdxe7'
你好,世界

作用

1.文件操作 ----指定以什么编码进行存储

2.网络编程 ---- 发消息只能发送字节类型

注:

ascii码:计算机创建初期,美国,是7位一段,但是发明者说为了拓展,留出一位,这样就是8位一段句。8位有多少种可能 ?256种

  密码本:

    ascii

         00000001

         01000001 01000010 01000011   ABC

随着计算机的发展. 以及普及率的提高. 流⾏到欧洲和亚洲. 这时ASCII码就不合适了. 比如: 中⽂汉字有几万个. 而ASCII 多也就256个位置. 所以ASCII不行了. 怎么办呢? 这时, 不同的国家就提出了不同的编码用来适用于各自的语言环境. 比如, 中国的GBK, GB2312, BIG5, ISO-8859-1等等. 这时各个国家都可以使用计算机了.

GBK:

GBK, 国标码占用2个字节. 对应ASCII码 GBK直接兼容. 因为计算机底层是用英文写的. 你不支持英文肯定不行. 而英文已经使用了ASCII码. 所以GBK要兼容ASCII. 这里GBK国标码. 前⾯的ASCII码部分. 由于使⽤两个字节. 所以对于ASCII码⽽言. 前9位都是0

字母A:0100 0001 # ASCII
字母A:0000 0000 0100 0001 # 国标码

随着全球化的普及,发展到欧洲,亚洲等国家,发现这些根本不够用,所以创建了万国码。 因为全球语言很多,ascii不足以存储这么多对应关系,创建了一个超级密码本:万国码unicode

8 位 == 1个字节.
hello h一个字符,e一个字符,he就不是一个字符.
中国:中是一个字符,国是一个字符.

Unicode:

创建之初,16位,2个字节,表示一个字符. 英文: a b c 六个字节 一个英文2个字节 中文 中国 四个字节 一个中文用2个字节

但是这种也不行,这种最多有65535种可能,可是中国文字有9万多,所以改成 32位,4个字节,表示一个字符.

a 01000001 01000010 01000011 00000001 b 01000001 01000010 01100011 00000001 中 01001001 01000010 01100011 00000001 浪费资源.

UTF-8:

对Unicode进行升级: utf-8 utf-8 用最少用8位数,去表示一个字符. 英文: 8位,1个字节表示. 欧洲文字: 16位,两个字节表示一个字符. 中文,亚洲文字: 24位,三个字节表示.

utf-16 用最少用16位数。

gbk: 国标,只能中国人自己用, 一个中文用16位,两个字节表示。

存储单位换算:

8bit = 1byte
1024byte = 1KB
1024KB = 1MB
1024MB = 1GB
1024GB = 1TB
1024TB = 1PB
1024TB = 1EB
1024EB = 1ZB
1024ZB = 1YB
1024YB = 1NB
1024NB = 1DB
原文地址:https://www.cnblogs.com/yangte/p/13532825.html