ASCII & Unicode

ASCII

ASCII的全称是“美国信息交换标准代码”(American Standard Code for Information Interchange)。它是一种字符编码标准,使用7位二进制代码来表示文本和控制字符,用于计算机、通信设备和其他使用文本的设备之间的通信。ASCII最早在1960年代初开发,自那以后一直被广泛用作字符编码方案。

以下是有关ASCII的一些关键点:

  1. 字符集:ASCII定义了一个包括控制字符(如回车和换行)和可打印字符(如字母、数字、标点符号和符号)在内的128个字符的集合。

  2. 二进制表示:每个ASCII字符都使用7位二进制数表示。这意味着有128个(2^7)可能的ASCII字符。

  3. 兼容性:ASCII与大多数现代字符编码系统兼容,包括UTF-8,它是一种可变长度编码,扩展了ASCII以支持更广泛的字符范围,包括来自其他语言的字符。

  4. 用途:ASCII最初是为电信和早期计算机系统开发的。它仍然在各种应用中使用,特别是在计算机系统和编程语言中用于文本和控制代码的基本表示。

  5. 扩展ASCII:有ASCII的扩展版本,如ISO 8859-1(Latin-1)和Windows-1252,它们包括各种语言和符号的附加字符。这些扩展使用第八位(位7)来表示附加字符。

  6. 限制:ASCII仅支持英语语言和一些基本符号的表示。它不支持非拉丁文字,如中文、阿拉伯文或西里尔文的字符。

以下是一些ASCII字符及其相应的十进制值的示例:

  • ‘A’在ASCII中表示为65。
  • ‘a’在ASCII中表示为97。
  • ‘0’在ASCII中表示为48。
  • ‘$‘在ASCII中表示为36。
  • 控制字符如“CR”(回车)和“LF”(换行)的十进制值分别为13和10。

在现代计算中,ASCII已经在国际化和多语言应用方面被更广泛的字符编码标准如UTF-8取代或补充,UTF-8可以表示各种语言和脚本的广泛字符范围,因此更适用于国际化和多语言应用。

Unicode

Unicode是一种字符编码标准,用于表示世界上几乎所有已知的书写系统中的字符(因此又称万国码)。它旨在为全球各种语言、符号和表意文字提供一个统一的编码方案,以便计算机和其他设备能够正确地表示和处理这些字符。Unicode解决了传统字符编码标准(如ASCII和ISO 8859系列)的局限性,这些标准只能表示有限的字符集。

以下是关于Unicode的一些关键信息:

  1. 字符集:Unicode定义了一个巨大的字符集,包括几乎所有世界上使用的书写系统的字符,以及许多特殊符号、表情符号和控制字符。它的字符范围从基本的拉丁字母到汉字、阿拉伯字母、希腊字母、数学符号等等。

  2. 编码方案:Unicode字符用唯一的代码点(code point)来表示。每个字符都有一个独一无二的整数值,称为代码点,通常以前缀"U+“加上十六进制数字表示,例如U+0041代表拉丁字母"A”。Unicode字符可以使用不同的编码方案来存储,最常见的编码方案之一是UTF-8。

  3. UTF-8:UTF-8(Unicode Transformation Format - 8-bit)是一种可变长度的字符编码方案,用于将Unicode字符映射到字节序列。它是最常见的Unicode编码方案之一,在互联网和计算机系统中广泛使用。UTF-8可以表示所有Unicode字符,而且对英文字母和ASCII字符与传统的ASCII编码兼容。

  4. UTF-16:UTF-16是另一种Unicode编码方案,它使用16位(两个字节)来表示大多数Unicode字符,但对于一些较大的字符(称为补充字符或代理对),需要使用两个16位编码单元来表示。

  5. UTF-32:UTF-32使用32位(四个字节)来表示每个Unicode字符,确保每个字符都有相同的固定长度。这种编码方案在某些特定应用中使用,但通常需要更多的存储空间。

  6. 应用领域:Unicode在计算机应用程序、互联网、国际化软件、操作系统、数据库、移动设备和各种其他领域中得到广泛应用。它使不同语言之间的文本交互和处理变得更容易,同时也支持多语言和多文化的内容。

Unicode的设计和维护由Unicode Consortium负责,该组织定期发布新版本的Unicode标准,以包含新字符和改进编码方案。这有助于确保Unicode继续适应不断发展的多语言和多文化需求。

字符集与字符集编码

字符集和字符集编码是两个不同层面的概念,尽管它们在字符处理和编码方面密切相关。让我们更详细地了解这两个概念:

  1. 字符集(Character Set)

    • 二进制和字符的对应关系,不关注最终的存储形式
    • 字符集是一种抽象概念,表示一组字符的集合。这些字符可以包括字母、数字、标点符号、符号、表情符号以及其他文本和控制字符。字符集是用于表示和识别文本字符的逻辑集合。
    • 例子:Unicode字符集包括世界上几乎所有已知的字符,从不同语言的字母到数学符号、表情符号等。
  2. 字符集编码(Character Encoding)

    • 实现如何将字符转化为实际的二进制进行存储或相反,编码决定了空间的使用大小
    • 字符集编码是将字符集中的字符映射到计算机内部使用的二进制数据的过程。它将字符集中的每个字符分配一个唯一的编码值或代码点,并定义了如何将这些编码值表示为字节序列。
    • 例子:UTF-8、UTF-16、ASCII等都是字符集编码,它们定义了如何将Unicode字符集中的字符表示为字节序列。

关键区别:

  • 字符集是字符的抽象集合,用于描述可用字符的范围,而不涉及具体的二进制表示。
  • 字符集编码是字符集的实际物理表示,它将字符映射到具体的二进制值以便计算机能够处理和存储它们。

在实际应用中,字符集编码是将字符集中的字符在计算机中进行传输、存储和处理所必需的,因为计算机只能理解和处理二进制数据。字符集编码定义了如何在计算机中表示字符,并确保字符可以正确地转换回原始字符集,以便进行文本的显示和处理。