ASCII 码

众所周知,计算机内部只能处理 0 和 1。的确如此,通过 0 和 1 的序列,计算机可以将其二进制形式表示任何数值,这是一个非常简单的数学运算(如数制一文中所解释的)。

然而,用 0 和 1 来表示字母和其他非数字字符并没有那么直观的方法。因此,为了做到这一点,计算机使用 ASCII 表,这些表或列表包含了罗马字母表中的所有字母以及一些附加字符。在这些表中,每个字符总是由相同的序号表示。例如,大写字母“A”的 ASCII 码总是由序号 65 表示,这很容易用二进制的 0 和 1 来表示:65 用二进制数表示为 1000001。

标准 ASCII 表定义了 128 个字符代码(从 0 到 127),其中前 32 个是控制码(不可打印),其余 96 个字符代码是可表示的字符。

*0123456789ABCDEF
0NULSOHSTXETXEOTENQACKBELBSTABLFVTFFCRSOSI
1DLEDC1DC2DC3DC4NAKSYNETBCANEMSUBESCFSGSRSUS
2 !"#$%&'()*+,-./
30123456789:;<=>?
4@ABCDEFGHIJKLMNO
5PQRSTUVWXYZ[\]^_
6`abcdefghijklmno
7pqrstuvwxyz{|}~

* 此面板的组织结构便于用十六进制读取:行号代表第一位数字,列号代表第二位数字。例如,字符“A”位于第 4 行和第 1 列,因此它在十六进制中表示为 0x41 (65)。

因为现在大多数系统都使用 8 位字节,可以表示 256 个不同的值,所以在 128 个标准 ASCII 码之外,还有另外 128 个被称为扩展 ASCII 的代码,这些代码依赖于平台和地区设置。因此,存在不止一种扩展 ASCII 字符集。

两种最常用的扩展 ASCII 字符集是 OEM 字符集(源自 IBM-PC 默认内置的字符集)和 ANSI 扩展 ASCII 字符集(被大多数现代操作系统使用)。

第一种,即 OEM 字符集,是绝大多数 PC 兼容机硬件所使用的字符集,并且在旧的 DOS 系统下也曾被使用。它包含一些外语符号、一些带标记的字符以及用于绘制面板的字符块。


ANSI 字符集是许多系统(如 Windows、一些 UNIX 平台和许多独立应用程序)采用的标准。它包含了更多的本地符号和带标记的字母,因此可以在更多语言中无需重新定义即可使用。