← 全部工具

ASCII 码表

完整的 ASCII 码表参考,含十进制、十六进制和二进制代码、控制字符与可打印字符,以及 ASCII 与 Unicode、UTF-8 的关系。
DecHexOctChar名称

ASCII 表:128 个数字如何成为文本的基石

ASCII 是美国信息交换标准代码(American Standard Code for Information Interchange)的缩写,是教会计算机就"一个字母是什么"达成一致的编码。它于 1963 年发布并在整个 1960 年代得到完善,将英文文本的每个基本字符、数字以及少数控制信号映射到机器可以存储和传输的数字上。当你按下大写字母 A 的键时,你的计算机存储的不是一个形状,而是数字 65。ASCII 就是那张查找表,让这个数字无论传到哪里都意味着 A。

这个标准以紧凑著称。ASCII 是一种 7 位编码,这意味着每个字符都能装进七个二进制位,整个字符集恰好横跨 2 的 7 次方,即 128 个不同的码位,编号从 0 到 127。这种节省是有意为之的。早期的电传打字机和调制解调器又慢又贵,所以每一位都很宝贵。七位足以涵盖大小写拉丁字母、十个数字、常用标点,以及让设备保持同步的信号字符,还剩下一位,许多系统用它来做差错校验。

深靛蓝色中由有序字符单元构成的抽象发光网格,伴有青色和金色光芒
ASCII 将每个字符排列进一个固定、有序、含 128 个编号单元的网格。

两半:控制字符与可打印字符

该表清晰地分为两个区域。码 0 到 31,加上码 127(DEL),是控制字符。它们不会在屏幕上打印出字形。相反,它们指示设备去做某件事:码 9 是水平制表符,码 10 是换行符(移动到新的一行),码 13 是回车符,码 7 则是曾经让终端发出可听见叮当声的响铃。这类信号码总共有三十三个,尽管许多如今已成为历史趣闻,但换行、回车和制表符在今天文本文件的格式化中仍然不可或缺。

码 32 到 126 是可打印字符,总共九十五个。码 32 是空格,它算作可打印字符,因为它会推进光标,尽管它什么也不显示。从这里开始,你会看到标点和符号,码 48 到 57 的数字 0 到 9,码 65 到 90 的大写字母 A 到 Z,以及码 97 到 122 的小写字母 a 到 z。从这种布局中得出一个巧妙的特性:同一字母的小写和大写版本恰好相差 32,这就是为什么翻转一个位就能转换大小写。这些规律并非偶然,它们是经过设计的,以便排序和大小写转换可以用简单的算术完成。

十进制、十六进制和二进制:同一个数字的三种视角

每个 ASCII 码都只是一个数字,而你会看到它以三种方式书写。十进制是日常的十进制形式,所以 A 是 65。十六进制(16 进制)是程序员常用的形式,因为它与字节对齐:A 是 0x41,可打印范围从 0x20 到 0x7E。二进制(2 进制)是硬件实际存储的形式,所以 A 在其七个位上是 1000001。同一个字符,三种记法,能够熟练地在它们之间转换,是你阅读内存转储或网络流量时的一项核心技能。如果你经常处理这些转换,speedor.net 上更广泛的参考表能让这些映射触手可及。

二进制和十六进制的光流汇入藏青色场域中发光的字形槽位
二进制和十六进制只是描述同一个 ASCII 码位的不同进制。

ASCII 在哪里依然重要

把 ASCII 归入历史是一个错误。它在任何接触代码的人的日常工作中都活跃着。编程语言在字节层面把字符串字面量、源文件和协议关键字当作 ASCII 处理。诸如 HTTP 头、SMTP 以及许多配置格式之类的网络协议都以 ASCII 定义,从而保持人类可读。当一个字符串看起来损坏时,开发者会拿出十六进制查看器,对照 ASCII 表读取原始字节,以发现一个杂散的控制字符或一个错误的行结尾。URL 编码、Base64 和转义序列全都建立在 ASCII 值之上。对于任何调试编码错误的人来说,在你的开发者工具旁放一份速查表,能把一个神秘的字节变成一个显而易见的答案。

从 ASCII 到 Unicode 和 UTF-8

ASCII 出色地处理了英文,却几乎处理不了别的。128 个字符的上限容纳不下带重音的字母、西里尔文、中文、阿拉伯文或表情符号。Unicode 解决了这一问题,它为每种书写系统中的每个字符分配一个唯一的数字,称为码位,如今这样的码位已远超十万个。关键在于,Unicode 是一份字符目录,而非一种存储格式,因此它需要一种编码来把这些码位转换成字节。

UTF-8 就是那种编码,也是 ASCII 从未真正消失的原因。UTF-8 每个字符使用一到四个字节,并且经过设计,使得码位 0 到 127——即整个 ASCII 范围——存储在单个字节中,与纯 ASCII 完全相同。这使得 UTF-8 完全向后兼容:任何有效的 ASCII 文件本身就是有效的 UTF-8 文件。127 以上的字符使用额外的字节。这种优雅的兼容性是 UTF-8 如今驱动着绝大多数网络的一大原因。简而言之,ASCII 是最初的 128 字符核心,Unicode 是包含它的通用目录,而 UTF-8 是承载两者的编码,同时让 ASCII 文本逐字节保持不变。

常见问题

ASCII 表中有多少个字符?

标准 ASCII 定义了 128 个字符,编号从 0 到 127。其中,包括空格在内有 95 个是可打印字符,33 个是用于向设备发信号而不打印字形的控制字符。

控制字符和可打印字符有什么区别?

控制字符,即码 0 到 31 加上 127,指示设备去做某件事,例如换行或制表,并且不产生可见字形。可打印字符,即码 32 到 126,是你在屏幕上实际看到的字母、数字、标点和空格。

为什么 ASCII 是 7 位编码?

七位恰好给出 128 种组合,这足以涵盖英文字母、数字、标点和控制信号,同时在缓慢的早期硬件上节省带宽。一个字节中的第八位常常被保留用于奇偶校验差错检测。

字母 A 的 ASCII 码是多少?

大写 A 是十进制 65、十六进制 0x41、二进制 1000001。小写 a 是十进制 97,恰好高出 32,这是一种内置的模式,让大小写转换可以用简单的算术完成。

ASCII 与 Unicode 相同吗?

不相同。ASCII 涵盖 128 个字符,而 Unicode 编目了跨越每种书写系统的超过十万个字符。ASCII 实际上就是 Unicode 的前 128 个码位,所以它是这个更大标准的一个小子集。

UTF-8 与 ASCII 有什么关系?

UTF-8 是 Unicode 的一种编码,它将码位 0 到 127 存储在单个字节中,与 ASCII 完全相同。这使得每个 ASCII 文件都是有效的 UTF-8 文件,也正是 UTF-8 向后兼容并主导现代网络的原因。