字符编码发展史_编码/解码_可变/不可变数据类型

发布时间 2023-12-04 15:27:00作者: Unlucky

【一】什么是字符编码

字符编码是一种将字符映射到数字编码的方法。由于计算机内部实际处理的是二进制数据,而字符是人类可读的符号,所以需要一种方式来表示和存储字符。字符编码就是将字符映射为对应的数字编码,以便计算机能够识别和处理字符。

【二】字符编码的发展史

字符编码的发展经历了多个阶段和标准的演变。下面是字符编码的主要发展史:

  1. ASCII(美国信息交换标准代码):ASCII是最早的字符编码标准,于1963年发布。它使用7位二进制数(共128个编码)来表示常见的英文字母、数字和一些特殊字符。由于只有128个编码,ASCII编码无法表示其他语言的字符。

  2. 扩展ASCII:为了满足其他语言字符的需求,出现了扩展ASCII编码,使用了8位二进制数(共256个编码)。扩展ASCII包含了ASCII编码的范围,并在剩余的编码空间中添加了其他字符。

  3. Unicode:随着计算机的发展和国际化的需求,需要一种能够表示全球范围内所有字符的编码方案。Unicode应运而生,它是一个字符集,为世界上几乎所有的字符都分配了一个唯一的数字编码。Unicode采用多字节编码方式,可以使用不同的编码方案来表示字符。

  4. UTF-8:Unicode的实现方式之一是UTF-8编码。UTF-8(Unicode Transformation Format - 8-bit)是一种可变长编码方式,它使用1到4个字节来表示字符,根据字符的不同而变化。UTF-8编码具有向后兼容性,能够表示所有Unicode字符,并且在存储空间和传输效率上相对较高,因此成为互联网上广泛使用的字符编码方案之一。

  5. 其他Unicode编码方案:除了UTF-8,Unicode还有其他编码方案,如UTF-16和UTF-32。UTF-16使用2个或4个字节来表示字符,而UTF-32则始终使用4个字节表示字符。这些编码方案在某些特定情况下仍然被使用,但在互联网上广泛采用的是UTF-8编码。

总结起来,字符编码的发展经历了从ASCII到Unicode的转变,Unicode又衍生出了不同的编码方案,其中UTF-8成为互联网上广泛使用的字符编码方案。这些发展使得计算机能够表示和处理全球范围内的各种字符。

![[Pasted image 20231204150250.png]]

【三】编码与解码

3.1 - 什么是编码

编码是一种将信息转换为特定形式或规则的过程,以便计算机或其他设备能够理解和处理这些信息。不同的编码方式适用于不同类型的数据和应用场景。

test = '测试'  
print(test.encode('utf-8'))  # b'\xe6\xb5\x8b\xe8\xaf\x95'

3.2 - 什么是解码

解码是将经过编码的数据转换回原始的形式或格式的过程。它是编码的逆向操作,用于还原编码后的数据,以便计算机或其他设备能够正确地处理和使用这些数据。

test = b'\xe6\xb5\x8b\xe8\xaf\x95'  
print(test.decode('utf-8'))  # 测试

【四】可变数据类型与不可变数据类型

在Python中,可变数据类型和不可变数据类型是指对象在创建后是否可以被修改。下面是Python中常见的可变数据类型和不可变数据类型:

可变数据类型:

  1. 列表(List):列表是一种有序的可变集合,可以包含任意类型的元素。列表可以通过索引进行修改、添加或删除元素。
  2. 字典(Dictionary):字典是一种键-值对的可变集合,用于存储和访问具有唯一键的元素。字典中的键是不可变的,但值可以是任意类型的对象。字典可以通过键来修改、添加或删除元素。

不可变数据类型:

  1. 数字(Number):包括整数(int)、浮点数(float)、复数(complex)等。数字对象在创建后无法修改。
  2. 字符串(String):字符串是一系列字符的不可变序列。字符串对象在创建后无法修改,但可以通过切片等操作来创建新的字符串。
  3. 元组(Tuple):元组是一种有序的不可变序列,可以包含任意类型的元素。元组对象在创建后无法修改,但可以通过索引来访问元素。