ASCII 码
众所周知,计算机内部只能处理 0 和 1。的确如此,通过 0 和 1 的序列,计算机可以将其二进制形式表示任何数值,这是一个非常简单的数学运算(如
数制一文中所解释的)。
然而,用 0 和 1 来表示字母和其他非数字字符并没有那么直观的方法。因此,为了做到这一点,计算机使用
ASCII 表,这些表或列表包含了罗马字母表中的所有字母以及一些附加字符。在这些表中,每个字符总是由相同的序号表示。例如,大写字母“A”的 ASCII 码总是由序号 65 表示,这很容易用二进制的 0 和 1 来表示:65 用二进制数表示为 1000001。
标准 ASCII 表定义了 128 个字符代码(从 0 到 127),其中前 32 个是控制码(不可打印),其余 96 个字符代码是可表示的字符。
* | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
0 | NUL | SOH | STX | ETX | EOT | ENQ | ACK | BEL | BS | TAB | LF | VT | FF | CR | SO | SI |
1 | DLE | DC1 | DC2 | DC3 | DC4 | NAK | SYN | ETB | CAN | EM | SUB | ESC | FS | GS | RS | US |
2 | | ! | " | # | $ | % | & | ' | ( | ) | * | + | , | - | . | / |
3 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | : | ; | < | = | > | ? |
4 | @ | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O |
5 | P | Q | R | S | T | U | V | W | X | Y | Z | [ | \ | ] | ^ | _ |
6 | ` | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o |
7 | p | q | r | s | t | u | v | w | x | y | z | { | | | } | ~ | |
* 此面板的组织结构便于用十六进制读取:行号代表第一位数字,列号代表第二位数字。例如,字符“A”位于第 4 行和第 1 列,因此它在十六进制中表示为 0x41 (65)。
因为现在大多数系统都使用 8 位字节,可以表示 256 个不同的值,所以在 128 个标准 ASCII 码之外,还有另外 128 个被称为
扩展 ASCII 的代码,这些代码依赖于平台和地区设置。因此,存在不止一种扩展 ASCII 字符集。
两种最常用的扩展 ASCII 字符集是 OEM 字符集(源自 IBM-PC 默认内置的字符集)和 ANSI 扩展 ASCII 字符集(被大多数现代操作系统使用)。
第一种,即 OEM 字符集,是绝大多数 PC 兼容机硬件所使用的字符集,并且在旧的 DOS 系统下也曾被使用。它包含一些外语符号、一些带标记的字符以及用于绘制面板的字符块。
ANSI 字符集是许多系统(如 Windows、一些 UNIX 平台和许多独立应用程序)采用的标准。它包含了更多的本地符号和带标记的字母,因此可以在更多语言中无需重新定义即可使用。