【python】编码

从ASCII到Unicode,再到UTF-8,编码技术如何满足全球化需求?本文深入解析编码发展历程,揭示字符编码背后的技术挑战与创新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

编码

1.什么是编码

计算机只认识机器码,即0和1,将文字转换为机器码就是编码

2. ASCII

计算机创建初期,美国,是7位一段,但是发明者说为了拓展,留出一位,这样就是8位一段句。
随着计算机的发展. 以及普及率的提高. 流⾏到欧洲和亚洲. 这时ASCII码就不合适了. 比如: 中⽂汉字有几万个. 而ASCII 多也就256个位置. 所以ASCII不能满足需求了. 这时, 不同的国家就提出了不同的编码用来适用于各自的语言环境. 比如, 中国的GBK, GB2312, BIG5, ISO-8859-1等等. 这时各个国家都可以使用计算机了.

3. GBK

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

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

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

4. Unicode

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

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

5. UTF-8

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

utf-16 用最少用16位数。

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

名称字节位数
ascii 美国1字节8位
gbk 中国中文 2字节16位
英文 1字节8位
unicode 万国码2字节16位
4字节32位
utf-8 可变编码英文 1字节8位
欧洲 2字节16位
亚洲 3字节24位

单位转化

8bit = 1byte
1024byte = 1KB
1024KB = 1MB
1024MB = 1GB
1024GB = 1TB
1024TB = 1PB
1024TB = 1EB
1024EB = 1ZB
1024ZB = 1YB
1024YB = 1NB
1024NB = 1DB

二次编码

  1. 在计算机内存中,统一使用Unicode编码,当需要将数据保存到硬盘或者需要网络传输的时候,就转换为非Unicode编码比如:UTF-8编码。
  2. 不同编码之间,不能直接互相识别。

编码

代码:

name = "张三"
print(name.encode("utf-8"))

结果:

b'\xe5\xbc\xa0\xe4\xb8\x89'

解码

代码:

name_coding = "张三".encode("utf-8")
print(name_coding)
name_decode = name_coding.decode("utf-8")
print(name_decode)

结果:

b'\xe5\xbc\xa0\xe4\xb8\x89'
张三
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值