ASCII 码表
ASCII 码表是一个免费在线速查工具:ASCII 即美国信息交换标准代码,本页列出全部 128 个字符的十进制、十六进制、八进制、二进制写法,以及 HTML 实体、URL 编码和转义写法,33 个控制字符逐个给出中文含义与今天的用途。输入一个字符或数字立刻定位,也能把文本转成 ASCII 码、把码值还原成文字,另附 128–255 三种扩展码页对照。全程浏览器本地查表,不上传。
ASCII 码表完整版(0–127)
当前显示 128 / 128 个字符;控制字符以缩写和控制图形符号显示。数据更新于 2026-10。
| 十进制 | 十六进制 | 八进制 | 二进制 | 字符 | 名称 | 分组 |
|---|---|---|---|---|---|---|
| 0 | 00 | 000 | 0000000 | NUL | 空字符 Null | 控制字符 |
| 1 | 01 | 001 | 0000001 | SOH | 标题开始 Start of Heading | 控制字符 |
| 2 | 02 | 002 | 0000010 | STX | 正文开始 Start of Text | 控制字符 |
| 3 | 03 | 003 | 0000011 | ETX | 正文结束 End of Text | 控制字符 |
| 4 | 04 | 004 | 0000100 | EOT | 传输结束 End of Transmission | 控制字符 |
| 5 | 05 | 005 | 0000101 | ENQ | 询问 Enquiry | 控制字符 |
| 6 | 06 | 006 | 0000110 | ACK | 确认 Acknowledge | 控制字符 |
| 7 | 07 | 007 | 0000111 | BEL | 响铃 Bell | 控制字符 |
| 8 | 08 | 010 | 0001000 | BS | 退格 Backspace | 控制字符 |
| 9 | 09 | 011 | 0001001 | HT | 水平制表 Horizontal Tabulation | 控制字符 |
| 10 | 0A | 012 | 0001010 | LF | 换行 Line Feed | 控制字符 |
| 11 | 0B | 013 | 0001011 | VT | 垂直制表 Vertical Tabulation | 控制字符 |
| 12 | 0C | 014 | 0001100 | FF | 换页 Form Feed | 控制字符 |
| 13 | 0D | 015 | 0001101 | CR | 回车 Carriage Return | 控制字符 |
| 14 | 0E | 016 | 0001110 | SO | 移出 Shift Out | 控制字符 |
| 15 | 0F | 017 | 0001111 | SI | 移入 Shift In | 控制字符 |
| 16 | 10 | 020 | 0010000 | DLE | 数据链路转义 Data Link Escape | 控制字符 |
| 17 | 11 | 021 | 0010001 | DC1 | 设备控制 1(XON) Device Control 1 | 控制字符 |
| 18 | 12 | 022 | 0010010 | DC2 | 设备控制 2 Device Control 2 | 控制字符 |
| 19 | 13 | 023 | 0010011 | DC3 | 设备控制 3(XOFF) Device Control 3 | 控制字符 |
| 20 | 14 | 024 | 0010100 | DC4 | 设备控制 4 Device Control 4 | 控制字符 |
| 21 | 15 | 025 | 0010101 | NAK | 否定确认 Negative Acknowledge | 控制字符 |
| 22 | 16 | 026 | 0010110 | SYN | 同步空闲 Synchronous Idle | 控制字符 |
| 23 | 17 | 027 | 0010111 | ETB | 传输块结束 End of Transmission Block | 控制字符 |
| 24 | 18 | 030 | 0011000 | CAN | 取消 Cancel | 控制字符 |
| 25 | 19 | 031 | 0011001 | EM | 介质结束 End of Medium | 控制字符 |
| 26 | 1A | 032 | 0011010 | SUB | 替换 Substitute | 控制字符 |
| 27 | 1B | 033 | 0011011 | ESC | 转义 Escape | 控制字符 |
| 28 | 1C | 034 | 0011100 | FS | 文件分隔符 File Separator | 控制字符 |
| 29 | 1D | 035 | 0011101 | GS | 组分隔符 Group Separator | 控制字符 |
| 30 | 1E | 036 | 0011110 | RS | 记录分隔符 Record Separator | 控制字符 |
| 31 | 1F | 037 | 0011111 | US | 单元分隔符 Unit Separator | 控制字符 |
| 32 | 20 | 040 | 0100000 | SP | 空格 Space | 空格 |
| 33 | 21 | 041 | 0100001 | ! | 感叹号 Exclamation Mark | 标点与符号 |
| 34 | 22 | 042 | 0100010 | " | 双引号 Quotation Mark | 标点与符号 |
| 35 | 23 | 043 | 0100011 | # | 井号 Number Sign | 标点与符号 |
| 36 | 24 | 044 | 0100100 | $ | 美元符号 Dollar Sign | 标点与符号 |
| 37 | 25 | 045 | 0100101 | % | 百分号 Percent Sign | 标点与符号 |
| 38 | 26 | 046 | 0100110 | & | 和号 Ampersand | 标点与符号 |
| 39 | 27 | 047 | 0100111 | ' | 单引号 Apostrophe | 标点与符号 |
| 40 | 28 | 050 | 0101000 | ( | 左圆括号 Left Parenthesis | 标点与符号 |
| 41 | 29 | 051 | 0101001 | ) | 右圆括号 Right Parenthesis | 标点与符号 |
| 42 | 2A | 052 | 0101010 | * | 星号 Asterisk | 标点与符号 |
| 43 | 2B | 053 | 0101011 | + | 加号 Plus Sign | 标点与符号 |
| 44 | 2C | 054 | 0101100 | , | 逗号 Comma | 标点与符号 |
| 45 | 2D | 055 | 0101101 | - | 连字符减号 Hyphen-Minus | 标点与符号 |
| 46 | 2E | 056 | 0101110 | . | 句点 Full Stop | 标点与符号 |
| 47 | 2F | 057 | 0101111 | / | 斜杠 Solidus | 标点与符号 |
| 48 | 30 | 060 | 0110000 | 0 | 数字 0 Digit Zero | 数字 |
| 49 | 31 | 061 | 0110001 | 1 | 数字 1 Digit One | 数字 |
| 50 | 32 | 062 | 0110010 | 2 | 数字 2 Digit Two | 数字 |
| 51 | 33 | 063 | 0110011 | 3 | 数字 3 Digit Three | 数字 |
| 52 | 34 | 064 | 0110100 | 4 | 数字 4 Digit Four | 数字 |
| 53 | 35 | 065 | 0110101 | 5 | 数字 5 Digit Five | 数字 |
| 54 | 36 | 066 | 0110110 | 6 | 数字 6 Digit Six | 数字 |
| 55 | 37 | 067 | 0110111 | 7 | 数字 7 Digit Seven | 数字 |
| 56 | 38 | 070 | 0111000 | 8 | 数字 8 Digit Eight | 数字 |
| 57 | 39 | 071 | 0111001 | 9 | 数字 9 Digit Nine | 数字 |
| 58 | 3A | 072 | 0111010 | : | 冒号 Colon | 标点与符号 |
| 59 | 3B | 073 | 0111011 | ; | 分号 Semicolon | 标点与符号 |
| 60 | 3C | 074 | 0111100 | < | 小于号 Less-Than Sign | 标点与符号 |
| 61 | 3D | 075 | 0111101 | = | 等号 Equals Sign | 标点与符号 |
| 62 | 3E | 076 | 0111110 | > | 大于号 Greater-Than Sign | 标点与符号 |
| 63 | 3F | 077 | 0111111 | ? | 问号 Question Mark | 标点与符号 |
| 64 | 40 | 100 | 1000000 | @ | at 符号 Commercial At | 标点与符号 |
| 65 | 41 | 101 | 1000001 | A | 大写字母 A Latin Capital Letter A | 大写字母 |
| 66 | 42 | 102 | 1000010 | B | 大写字母 B Latin Capital Letter B | 大写字母 |
| 67 | 43 | 103 | 1000011 | C | 大写字母 C Latin Capital Letter C | 大写字母 |
| 68 | 44 | 104 | 1000100 | D | 大写字母 D Latin Capital Letter D | 大写字母 |
| 69 | 45 | 105 | 1000101 | E | 大写字母 E Latin Capital Letter E | 大写字母 |
| 70 | 46 | 106 | 1000110 | F | 大写字母 F Latin Capital Letter F | 大写字母 |
| 71 | 47 | 107 | 1000111 | G | 大写字母 G Latin Capital Letter G | 大写字母 |
| 72 | 48 | 110 | 1001000 | H | 大写字母 H Latin Capital Letter H | 大写字母 |
| 73 | 49 | 111 | 1001001 | I | 大写字母 I Latin Capital Letter I | 大写字母 |
| 74 | 4A | 112 | 1001010 | J | 大写字母 J Latin Capital Letter J | 大写字母 |
| 75 | 4B | 113 | 1001011 | K | 大写字母 K Latin Capital Letter K | 大写字母 |
| 76 | 4C | 114 | 1001100 | L | 大写字母 L Latin Capital Letter L | 大写字母 |
| 77 | 4D | 115 | 1001101 | M | 大写字母 M Latin Capital Letter M | 大写字母 |
| 78 | 4E | 116 | 1001110 | N | 大写字母 N Latin Capital Letter N | 大写字母 |
| 79 | 4F | 117 | 1001111 | O | 大写字母 O Latin Capital Letter O | 大写字母 |
| 80 | 50 | 120 | 1010000 | P | 大写字母 P Latin Capital Letter P | 大写字母 |
| 81 | 51 | 121 | 1010001 | Q | 大写字母 Q Latin Capital Letter Q | 大写字母 |
| 82 | 52 | 122 | 1010010 | R | 大写字母 R Latin Capital Letter R | 大写字母 |
| 83 | 53 | 123 | 1010011 | S | 大写字母 S Latin Capital Letter S | 大写字母 |
| 84 | 54 | 124 | 1010100 | T | 大写字母 T Latin Capital Letter T | 大写字母 |
| 85 | 55 | 125 | 1010101 | U | 大写字母 U Latin Capital Letter U | 大写字母 |
| 86 | 56 | 126 | 1010110 | V | 大写字母 V Latin Capital Letter V | 大写字母 |
| 87 | 57 | 127 | 1010111 | W | 大写字母 W Latin Capital Letter W | 大写字母 |
| 88 | 58 | 130 | 1011000 | X | 大写字母 X Latin Capital Letter X | 大写字母 |
| 89 | 59 | 131 | 1011001 | Y | 大写字母 Y Latin Capital Letter Y | 大写字母 |
| 90 | 5A | 132 | 1011010 | Z | 大写字母 Z Latin Capital Letter Z | 大写字母 |
| 91 | 5B | 133 | 1011011 | [ | 左方括号 Left Square Bracket | 标点与符号 |
| 92 | 5C | 134 | 1011100 | \ | 反斜杠 Reverse Solidus | 标点与符号 |
| 93 | 5D | 135 | 1011101 | ] | 右方括号 Right Square Bracket | 标点与符号 |
| 94 | 5E | 136 | 1011110 | ^ | 脱字符 Circumflex Accent | 标点与符号 |
| 95 | 5F | 137 | 1011111 | _ | 下划线 Low Line | 标点与符号 |
| 96 | 60 | 140 | 1100000 | ` | 反引号 Grave Accent | 标点与符号 |
| 97 | 61 | 141 | 1100001 | a | 小写字母 a Latin Small Letter A | 小写字母 |
| 98 | 62 | 142 | 1100010 | b | 小写字母 b Latin Small Letter B | 小写字母 |
| 99 | 63 | 143 | 1100011 | c | 小写字母 c Latin Small Letter C | 小写字母 |
| 100 | 64 | 144 | 1100100 | d | 小写字母 d Latin Small Letter D | 小写字母 |
| 101 | 65 | 145 | 1100101 | e | 小写字母 e Latin Small Letter E | 小写字母 |
| 102 | 66 | 146 | 1100110 | f | 小写字母 f Latin Small Letter F | 小写字母 |
| 103 | 67 | 147 | 1100111 | g | 小写字母 g Latin Small Letter G | 小写字母 |
| 104 | 68 | 150 | 1101000 | h | 小写字母 h Latin Small Letter H | 小写字母 |
| 105 | 69 | 151 | 1101001 | i | 小写字母 i Latin Small Letter I | 小写字母 |
| 106 | 6A | 152 | 1101010 | j | 小写字母 j Latin Small Letter J | 小写字母 |
| 107 | 6B | 153 | 1101011 | k | 小写字母 k Latin Small Letter K | 小写字母 |
| 108 | 6C | 154 | 1101100 | l | 小写字母 l Latin Small Letter L | 小写字母 |
| 109 | 6D | 155 | 1101101 | m | 小写字母 m Latin Small Letter M | 小写字母 |
| 110 | 6E | 156 | 1101110 | n | 小写字母 n Latin Small Letter N | 小写字母 |
| 111 | 6F | 157 | 1101111 | o | 小写字母 o Latin Small Letter O | 小写字母 |
| 112 | 70 | 160 | 1110000 | p | 小写字母 p Latin Small Letter P | 小写字母 |
| 113 | 71 | 161 | 1110001 | q | 小写字母 q Latin Small Letter Q | 小写字母 |
| 114 | 72 | 162 | 1110010 | r | 小写字母 r Latin Small Letter R | 小写字母 |
| 115 | 73 | 163 | 1110011 | s | 小写字母 s Latin Small Letter S | 小写字母 |
| 116 | 74 | 164 | 1110100 | t | 小写字母 t Latin Small Letter T | 小写字母 |
| 117 | 75 | 165 | 1110101 | u | 小写字母 u Latin Small Letter U | 小写字母 |
| 118 | 76 | 166 | 1110110 | v | 小写字母 v Latin Small Letter V | 小写字母 |
| 119 | 77 | 167 | 1110111 | w | 小写字母 w Latin Small Letter W | 小写字母 |
| 120 | 78 | 170 | 1111000 | x | 小写字母 x Latin Small Letter X | 小写字母 |
| 121 | 79 | 171 | 1111001 | y | 小写字母 y Latin Small Letter Y | 小写字母 |
| 122 | 7A | 172 | 1111010 | z | 小写字母 z Latin Small Letter Z | 小写字母 |
| 123 | 7B | 173 | 1111011 | { | 左花括号 Left Curly Bracket | 标点与符号 |
| 124 | 7C | 174 | 1111100 | | | 竖线 Vertical Line | 标点与符号 |
| 125 | 7D | 175 | 1111101 | } | 右花括号 Right Curly Bracket | 标点与符号 |
| 126 | 7E | 176 | 1111110 | ~ | 波浪号 Tilde | 标点与符号 |
| 127 | 7F | 177 | 1111111 | DEL | 删除 Delete | 控制字符 |
如何使用ASCII 码表
在即查框里输入一个字符、一个数字或一个名称:A、65、0x41、1000001、LF、换行、Ctrl+C 都能命中,单独输入一个空格就是 32 号空格;命中后码表高亮该行,并给出全部写法与一键复制。
用分组按钮只看控制字符、数字或字母,在「显示列」里加上 HTML 实体、URL 编码、转义写法、Caret 写法;整张表可以复制成 TSV 或 Markdown、下载 CSV,或者直接打印成一页 A4。
要整段转换就切到「文本 ⇄ ASCII 码」:粘贴文字得到十进制、十六进制或二进制码值;反过来粘贴一串码值,工具会自动判断进制并还原成文字,有歧义时提示另一种解读。
关于ASCII 码表的常见问题
- ASCII 码表查询会上传我输入的内容吗?
- 不会。整张码表随页面一起打包在你的浏览器里,即查、文本与 ASCII 码互转都在本地完成,输入的文字和码值不会发送到服务器,也不会写进本地存储——本地只记住你选的分组、显示列和转换参数,关掉页面就只剩这些偏好。
- A 的 ASCII 码是多少?小写 a 呢?
- 大写 A 是 65(十六进制 41,二进制 1000001),小写 a 是 97(十六进制 61)。26 个大写字母占 65 到 90,小写字母占 97 到 122,同一个字母的大小写正好相差 32,所以记住 A 是 65、a 是 97 就能推出全部字母。
- 大小写字母的 ASCII 码为什么相差 32?
- 32 是二进制 100000,正好是第 5 位。ASCII 设计时有意让大小写字母只在这一位上不同,所以程序里把字符和 32 做异或就能切换大小写,和 0x20 按位与就能判断它是不是小写字母,比查表或比较范围都省事。
- 空格、数字 0、换行和回车的 ASCII 码是多少?
- 空格是 32,数字字符 0 是 48(9 是 57,所以字符 7 减去字符 0 正好得到数值 7),换行 LF 是 10(写作 \n),回车 CR 是 13(写作 \r)。注意 ASCII 码 0 是 NUL 空字符,和数字字符 0 不是一回事。
- ASCII 码一共有多少个?哪些是控制字符?
- 标准 ASCII 共 128 个(0 到 127,只用 7 位)。其中 0 到 31 和 127 共 33 个是控制字符,不显示成字形;32 到 126 共 95 个是可打印字符,包括空格、10 个数字、52 个大小写字母和 32 个标点符号。DEL(127)最容易被漏掉。
- ASCII 码里的换行 LF 和回车 CR 有什么区别?
- 打字机时代,回车是把字车推回行首,换行是把纸往上卷一行。今天 Unix、Linux、macOS 的文本文件用 LF(10)换行,Windows 用 CR+LF(13 10),经典 Mac OS 单用 CR。Windows 文件拿到 Linux 里打开多出来的 ^M,就是那个多余的 CR。
- 扩展 ASCII 码表(128–255)为什么各网站不一样?
- 因为根本没有一张叫「扩展 ASCII」的统一标准。ASCII 只定义到 127,128 到 255 由各家码页自行填充:DOS 的 CP437 放了制表线和带音标字母,ISO-8859-1 放西欧字母,Windows-1252 又在 0x80 到 0x9F 放了欧元符号和弯引号。本页三张并排对照。
- 中文有 ASCII 码吗?汉字怎么查编码?
- 没有。ASCII 只有 128 个字符,不含任何汉字。汉字在 Unicode 里有码点,比如「中」是 U+4E2D(十进制 20013),保存成 UTF-8 是 3 个字节,在 GBK 里是 2 个字节。在本页即查框里输入汉字会直接给出码点和 UTF-8 字节,更多转义写法可以用本站的 Unicode 转换。
- 怎么把文字转成 ASCII 码,或把 ASCII 码转回文字?
- 在本页「文本 ⇄ ASCII 码」里粘贴文字,选十进制、十六进制或二进制即可得到码值;反过来粘贴一串码值,工具会自动判断进制并还原。数字串有歧义时(比如 41 42 43 按十进制是 )*+,按十六进制是 ABC)会提示另一种解读,解不开的码逐个标出,不会悄悄丢掉。
- Ctrl+C 和 ASCII 码有什么关系?
- Ctrl 加字母发出的就是控制字符:字母的码值减 64,Ctrl+C 是 3 号 ETX,Ctrl+D 是 4 号 EOT。Unix 终端收到 ETX 会给前台程序发中断信号,在行首收到 EOT 视为输入结束;Ctrl+Z 在 Unix 是挂起进程,在 Windows 控制台则表示输入结束。
- ASCII 码和 Unicode、UTF-8 有什么区别?
- ASCII 是 Unicode 的前 128 个码点,两者在 0 到 127 范围内完全一致;UTF-8 是 Unicode 的一种存储方式,它把这 128 个字符原样存成 1 个字节,所以一份纯英文的 ASCII 文件本身就是合法的 UTF-8 文件。区别在 127 以外:ASCII 到此为止,Unicode 还收录了十几万个字符。
- 键盘键码 keyCode 和 ASCII 码是一回事吗?
- 不是。keyCode 标识的是哪个物理键,ASCII 码标识的是哪个字符:A 键的 keyCode 是 65,不管你打出的是大写 A 还是小写 a;小键盘 0 的 keyCode 是 96,而 96 在 ASCII 里是反引号。想看按键的真实键码,用本站的键盘键码查询。
记住这五个数就够用:空格、0、A、a、DEL 的 ASCII 码
ASCII 码表看起来有 128 行,日常真正要记的只有五个数,其余都能推出来。数字字符从 48 开始连续排列,所以字符 7 的码值减去字符 0 的码值正好是 7, 这也是 C 语言里把数字字符转成数值的经典写法;大写字母从 65 开始,小写字母从 97 开始,两者相差 32。
| 字符 | 十进制 | 十六进制 | 二进制 | 记住它的理由 |
|---|---|---|---|---|
| 空格(SP) | 32 | 20 | 0100000 | 第一个可打印字符,比它小的全是控制字符 |
| 数字 0 | 48 | 30 | 0110000 | 低 4 位就是数值本身:7 是 37,十六进制末位正是 7 |
| 大写 A | 65 | 41 | 1000001 | 大写字母 A–Z 连续排列,B 是 66,Z 是 90 |
| 小写 a | 97 | 61 | 1100001 | 与大写只差第 5 位(0x20),所以 65 ^ 32 = 97 |
| 删除(DEL) | 127 | 7F | 1111111 | 7 位全为 1,最后一个 ASCII 码,也是控制字符 |
常见 ASCII 码查询速答
下面是 ASCII 码查询里被问得最多的单个字符,答案全部从本页的码表数据现算。想看完整写法(HTML 实体、URL 编码、转义写法),在上方即查框里输入对应字符即可。
| 你在搜的问题 | 答案 |
|---|---|
| A的ASCII码是多少 | 大写 A 是 65,十六进制 41,二进制 1000001 |
| a的ASCII码 | 小写 a 是 97,十六进制 61 |
| 空格的ASCII码 | 空格是 32,十六进制 20,URL 编码写作 %20 |
| 0的ASCII码 | 数字字符 0 是 48;而 ASCII 码 0 是 NUL 空字符,两者不是一回事 |
| 换行符的ASCII码 | 换行 LF 是 10,十六进制 0A |
| 回车的ASCII码 | 回车 CR 是 13,十六进制 0D |
| \n的ASCII码 | \n 是换行 LF,ASCII 码 10 |
| \0的ASCII码 | \0 是空字符 NUL,ASCII 码 0,C 语言用它标记字符串结尾 |
| Tab的ASCII码 | Tab 是水平制表 HT,ASCII 码 9,写作 \t |
| ESC的ASCII码 | ESC 是 27,十六进制 1B,终端颜色序列的开头 |
| DEL ASCII 127 | DEL 是 127,二进制 1111111,Caret 写法 ^? |
| Ctrl+C ASCII | Ctrl+C 发出 3 号 ETX(正文结束) |
| 大小写字母ASCII码相差多少 | 相差 32,即第 5 位 0x20 |
| ASCII码一共多少个 | 128 个:33 个控制字符 + 95 个可打印字符 |
这张 ASCII 码对照表也叫 ASCII 表、ASCII 字符表或 ASCII 编码表,英文叫 ASCII table、ASCII chart 或 ASCII code table。表里同时给出 ASCII 码十进制、ASCII 码八进制、ASCII 码二进制三种写法,也可以当作 ASCII 码十六进制对照表来用; 英文里常说的 ASCII to hex、ASCII to binary、ASCII to text,对应的就是本页「文本 ⇄ ASCII 码」里的字符转 ASCII 码、文本转 ASCII 码与 ASCII 码转字符、ASCII 码转文本。
33 个 ASCII 控制字符一览:缩写、Caret、转义与今天的用途
ASCII 控制字符也叫 ASCII 不可见字符:0–31 共 32 个,再加上 127 号 DEL,一共 33 个,不是 32 个。 它们诞生于电传打字机时代,大部分今天已经用不上,但有十几个仍然天天在用——换行、回车、Tab、终端里的 Ctrl+C,以及条码与日志格式里的分隔符。
| 码值 | 缩写 | Caret | 转义写法 | 中文含义 | 今天在哪还会碰到 |
|---|---|---|---|---|---|
| 0(0x00) | NUL | ^@ | \0 \x00 \000 \u0000 | 空字符 | C 语言用它标记字符串结尾,写作 \0;纸带时代表示「这里没打孔」。它不是空格(32),也不是数字字符 0(48)。今天在二进制文件、C 字符串和数据库里的「\0 截断」问题中最常见。 |
| 1(0x01) | SOH | ^A | \x01 \001 \u0001 | 标题开始 | 早期电报与报文协议用它标出报头的开始。今天最常见于金融行业的 FIX 协议:FIX 消息的字段之间就用 SOH(0x01)分隔,日志里常显示成 ^A。 |
| 2(0x02) | STX | ^B | \x02 \002 \u0002 | 正文开始 | 报文协议里表示「报头结束、正文开始」。今天在串口设备、POS 机、条码扫描枪等工业通信协议中仍常见,数据帧常以 STX 开头、ETX 结尾。 |
| 3(0x03) | ETX | ^C | \x03 \003 \u0003 | 正文结束 | 原意是报文正文结束,串口协议里与 STX 成对出现。在终端里按 Ctrl+C 发出的就是它,但「中断」不是 ETX 自带的语义:是 Unix 终端驱动看到它后给前台进程发 SIGINT,stty intr 可以改成别的键。 |
| 4(0x04) | EOT | ^D | \x04 \004 \u0004 | 传输结束 | 原意是整段传输结束。终端里按 Ctrl+D 发出它:Unix 终端在行首收到时让 read() 返回 0,程序就当作到了文件结尾。注意 EOF 不是一个字符,文件里并不存在一个叫 EOF 的字节。 |
| 5(0x05) | ENQ | ^E | \x05 \005 \u0005 | 询问 | 用来询问对方「你是谁 / 准备好了吗」,对方回 ACK 或身份串。今天在老式终端的应答回传(answerback)和一些工业串口协议里还能见到,日常编程很少碰到。 |
| 6(0x06) | ACK | ^F | \x06 \006 \u0006 | 确认 | 接收方告诉发送方「收到了、没问题」,与 21 号 NAK 成对。TCP 报头里的 ACK 标志位名字就来自这里,串口、Modbus 等设备协议里仍直接用这个字节做应答。 |
| 7(0x07) | BEL | ^G | \a \x07 \007 \u0007 | 响铃 | 让电传打字机响铃提醒操作员。今天往终端输出这个字节仍会发出提示音或让标签页闪一下;C 和 Python 写作 \a,但 JavaScript 没有 \a 这个转义,要写 \x07。 |
| 8(0x08) | BS | ^H | \b \x08 \010 \u0008 | 退格 | 让打印头往回退一格,老式打字机靠它把两个字符叠印成一个。字符串里写作 \b;但在 JavaScript 和多数正则里,\b 表示单词边界,不是退格,这是最常见的混淆。 |
| 9(0x09) | HT | ^I | \t \x09 \011 \u0009 | 水平制表 | 即 Tab 键,跳到下一个制表位。写作 \t,Ctrl+I 也能打出来。今天随处可见:TSV 表格的列分隔符、Makefile 规定的缩进,以及「空格还是 Tab 缩进」的老争论。 |
| 10(0x0A) | LF | ^J | \n \x0a \012 \u000a | 换行 | 让纸往上卷一行。Unix、Linux、macOS 的文本文件用单个 LF 换行,写作 \n,Ctrl+J 也能打出来。HTTP、SMTP 等协议规定行尾必须是 CR+LF,单个 LF 不算。 |
| 11(0x0B) | VT | ^K | \v \x0b \013 \u000b | 垂直制表 | 让打印头跳到下一个垂直制表位,今天几乎没人用。写作 \v,JavaScript 字符串支持 \v,但 JSON 不支持,JSON 里只能写 \u000b;Word 里的手动换行(Shift+Enter)导出纯文本时有时会变成它。 |
| 12(0x0C) | FF | ^L | \f \x0c \014 \u000c | 换页 | 让打印机退出当前页、换到下一张纸。写作 \f。今天在 C 和 Python 的老源码里偶尔用作「分页」标记,PDF 文本提取结果里也常见到它作为页与页之间的分隔。 |
| 13(0x0D) | CR | ^M | \r \x0d \015 \u000d | 回车 | 让打字机的字车回到行首。写作 \r,Ctrl+M 也能打出来。Windows 文本文件用 CR+LF(13 10)换行,经典 Mac OS(9 及以前)单用 CR;Windows 文件在 Linux 里多出的 ^M 就是它。 |
| 14(0x0E) | SO | ^N | \x0e \016 \u000e | 移出 | 切换到另一套字符集,直到遇到 SI 才切回来。老式终端用它切到画线字符;今天在 ISO-2022-JP 等 7 位编码的电子邮件里仍保留这种「切换」思路。 |
| 15(0x0F) | SI | ^O | \x0f \017 \u000f | 移入 | 与 14 号 SO 成对,切回标准字符集。终端屏幕突然满屏乱码线条时,往往是误输出了 SO,执行 reset 或输出一个 SI 就能恢复。 |
| 16(0x10) | DLE | ^P | \x10 \020 \u0010 | 数据链路转义 | 告诉对方「后面的字节按数据处理,不是控制字符」,相当于数据流里的转义前缀。今天在一些串口二进制协议里仍用 DLE 包住 STX、ETX 来做帧定界。 |
| 17(0x11) | DC1 | ^Q | \x11 \021 \u0011 | 设备控制 1(XON) | 设备控制码,通常用作软件流控的 XON:「可以继续发了」。终端按 Ctrl+S 后画面像卡死了一样,按 Ctrl+Q 发出 XON 就能恢复。 |
| 18(0x12) | DC2 | ^R | \x12 \022 \u0012 | 设备控制 2 | 留给设备自定义的控制码,早期用来打开纸带穿孔机等辅助设备。今天只在个别打印机和收银设备的私有指令集里出现,含义以设备手册为准。 |
| 19(0x13) | DC3 | ^S | \x13 \023 \u0013 | 设备控制 3(XOFF) | 设备控制码,通常用作软件流控的 XOFF:「先停一下」。终端里按 Ctrl+S 就会发出它,输出被暂停,看起来像程序卡死,按 Ctrl+Q 恢复。 |
| 20(0x14) | DC4 | ^T | \x14 \024 \u0014 | 设备控制 4 | 留给设备自定义的控制码,早期用来关闭或停止辅助设备。今天与 DC2 一样,只在少数设备私有协议里出现,通用软件基本不会用到。 |
| 21(0x15) | NAK | ^U | \x15 \025 \u0015 | 否定确认 | 接收方告诉发送方「出错了、请重发」,与 6 号 ACK 成对。XMODEM 等老式文件传输协议用它请求重传,今天的串口设备协议也常保留这个应答字节。 |
| 22(0x16) | SYN | ^V | \x16 \026 \u0016 | 同步空闲 | 同步传输时在没有数据可发的空档里填充,让收发双方保持时钟同步。TCP 握手的 SYN 标志名字与它同源,但那是报头里的一个标志位,不是这个字节。 |
| 23(0x17) | ETB | ^W | \x17 \027 \u0017 | 传输块结束 | 表示一个数据块传完了,但整段传输还没结束,常用于分块发送的老式协议。今天在部分 POS 和医疗设备的串口协议里仍作为块尾标记出现。 |
| 24(0x18) | CAN | ^X | \x18 \030 \u0018 | 取消 | 表示前面的数据有误、请作废。今天在终端里仍有用处:ANSI 终端收到 CAN 会中止正在解析的转义序列,XMODEM 也用连续几个 CAN 表示取消传输。 |
| 25(0x19) | EM | ^Y | \x19 \031 \u0019 | 介质结束 | 表示纸带或磁带到头了,后面没有可用数据。今天几乎只在讲解 ASCII 历史时出现,日常数据里见到它多半是二进制内容被当成了文本。 |
| 26(0x1A) | SUB | ^Z | \x1a \032 \u001a | 替换 | 用来顶替传输中损坏的字符。Ctrl+Z 打出它,但两个平台语义不同:Windows 控制台把它当作输入结束(老 DOS 文本文件末尾也常带一个),Unix 终端里 Ctrl+Z 则是挂起前台进程(SIGTSTP)。 |
| 27(0x1B) | ESC | ^[ | \e \x1b \033 \u001b | 转义 | 表示后面几个字节是一条控制指令。今天最常见的是终端颜色:ANSI 转义序列 ESC [ 31 m 就以它开头。写作 \x1b、\u001b 或八进制 \033;\e 只是 GCC 与 Bash 的扩展写法,不是标准 C。 |
| 28(0x1C) | FS | ^\ | \x1c \034 \u001c | 文件分隔符 | 信息分隔符里最大的一级,用来分隔「文件」。FS、GS、RS、US 由大到小形成四级层次,今天在少数 EDI、医疗数据格式里仍被当作不会与正文冲突的分隔符使用。 |
| 29(0x1D) | GS | ^] | \x1d \035 \u001d | 组分隔符 | 第二级信息分隔符。今天最常碰到它的地方是 GS1 条码:GS1-128 与 GS1 DataMatrix 里可变长度字段之间的 FNC1 分隔,扫码枪输出的就是 GS(0x1D),药品追溯码里大量出现。 |
| 30(0x1E) | RS | ^^ | \x1e \036 \u001e | 记录分隔符 | 第三级信息分隔符,用来分隔记录。RFC 7464 的 JSON Text Sequences 规定每条 JSON 记录前加一个 RS,有些日志与流式接口按这个格式输出。 |
| 31(0x1F) | US | ^_ | \x1f \037 \u001f | 单元分隔符 | 最小一级信息分隔符,用来分隔字段。比逗号、Tab 更不容易与正文冲突,所以一些内部数据导出格式和数据库工具会用 US 和 RS 代替 CSV 的逗号与换行。 |
| 127(0x7F) | DEL | ^? | \x7f \177 \u007f | 删除 | 7 位全为 1(1111111)。纸带时代打错了字,就把这一格的 7 个孔全打穿表示作废,所以它排在最后。它不在 0–31 之间,但同样是控制字符,因此控制字符一共 33 个。 |
回车 CR、换行 LF 与 CRLF:回车换行区别
CR LF 区别要从打字机说起:回车 CR(13)把字车推回行首,换行 LF(10)把纸往上卷一行,两个动作合起来才是「另起一行」。 到了计算机上,各系统只挑了其中一种或两种来表示行尾,于是有了今天的三种换行。
| 系统 | 行尾 | ASCII 码 | 转义写法 |
|---|---|---|---|
| Windows、HTTP / SMTP 等网络协议 | CR+LF | 13 10 | \r\n |
| Unix、Linux、macOS | LF | 10 | \n |
| 经典 Mac OS(9 及以前) | CR | 13 | \r |
Ctrl 组合键和控制字符:Ctrl+C、Ctrl+D、Ctrl+Z 为什么能控制终端
终端里的 Ctrl 组合键发出的就是 ASCII 控制字符,规则是把字母的码值和 64 做异或(等价于大写字母减 64):Ctrl+A 是 1,Ctrl+C 是 3,Ctrl+[ 是 27 也就是 ESC, 所以在 vim 里按 Ctrl+[ 和按 Esc 键效果一样。这种 ^C 式的写法叫 Caret 写法,终端回显和 cat -v 都用它显示不可见字符。
| 按键 | 发出的字符 | 实际效果 |
|---|---|---|
| Ctrl+C | 3 号 ETX(正文结束) | Unix 终端里 Ctrl+C 会让终端驱动发 SIGINT 中断前台进程;Windows 控制台也把 Ctrl+C 当作中断 |
| Ctrl+D | 4 号 EOT(传输结束) | Unix 终端行首按 Ctrl+D 表示输入结束(EOF),Python、bash 交互界面会因此退出 |
| Ctrl+Z | 26 号 SUB(替换) | Windows 控制台:Ctrl+Z 回车表示输入结束;Unix 终端:Ctrl+Z 挂起前台进程,fg 可恢复 |
| Ctrl+S | 19 号 DC3(设备控制 3(XOFF)) | 设备控制码,通常用作软件流控的 XOFF:「先停一下」。终端里按 Ctrl+S 就会发出它,输出被暂停,看起来像程序卡死,按 Ctrl+Q 恢复。 |
| Ctrl+Q | 17 号 DC1(设备控制 1(XON)) | 设备控制码,通常用作软件流控的 XON:「可以继续发了」。终端按 Ctrl+S 后画面像卡死了一样,按 Ctrl+Q 发出 XON 就能恢复。 |
扩展 ASCII 码表(128–255)没有统一标准
网上搜到的扩展 ASCII 码表常常互相矛盾,原因是 ASCII 本身只定义到 127,ASCII 码 128-255 这一段由各家码页自行填充,从来没有一张「标准扩展 ASCII」。 最常被叫作扩展 ASCII 的有三张:ISO-8859-1(Latin-1 码表)、Windows-1252 和 DOS 时代的 CP437 码表。三者在 0xA0 以后 Latin-1 与 1252 完全一致,差异集中在 0x80–0x9F 这一段,见下表。
| 字节 | ISO-8859-1 (Latin-1) | Windows-1252 | CP437 (DOS) |
|---|---|---|---|
| 128(0x80) | 控制字符 PAD | €(U+20AC) | Ç(U+00C7) |
| 129(0x81) | 控制字符 HOP | 未定义 | ü(U+00FC) |
| 130(0x82) | 控制字符 BPH | ‚(U+201A) | é(U+00E9) |
| 131(0x83) | 控制字符 NBH | ƒ(U+0192) | â(U+00E2) |
| 132(0x84) | 控制字符 IND | „(U+201E) | ä(U+00E4) |
| 133(0x85) | 控制字符 NEL | …(U+2026) | à(U+00E0) |
| 134(0x86) | 控制字符 SSA | †(U+2020) | å(U+00E5) |
| 135(0x87) | 控制字符 ESA | ‡(U+2021) | ç(U+00E7) |
| 136(0x88) | 控制字符 HTS | ˆ(U+02C6) | ê(U+00EA) |
| 137(0x89) | 控制字符 HTJ | ‰(U+2030) | ë(U+00EB) |
| 138(0x8A) | 控制字符 VTS | Š(U+0160) | è(U+00E8) |
| 139(0x8B) | 控制字符 PLD | ‹(U+2039) | ï(U+00EF) |
| 140(0x8C) | 控制字符 PLU | Œ(U+0152) | î(U+00EE) |
| 141(0x8D) | 控制字符 RI | 未定义 | ì(U+00EC) |
| 142(0x8E) | 控制字符 SS2 | Ž(U+017D) | Ä(U+00C4) |
| 143(0x8F) | 控制字符 SS3 | 未定义 | Å(U+00C5) |
| 144(0x90) | 控制字符 DCS | 未定义 | É(U+00C9) |
| 145(0x91) | 控制字符 PU1 | ‘(U+2018) | æ(U+00E6) |
| 146(0x92) | 控制字符 PU2 | ’(U+2019) | Æ(U+00C6) |
| 147(0x93) | 控制字符 STS | “(U+201C) | ô(U+00F4) |
| 148(0x94) | 控制字符 CCH | ”(U+201D) | ö(U+00F6) |
| 149(0x95) | 控制字符 MW | •(U+2022) | ò(U+00F2) |
| 150(0x96) | 控制字符 SPA | –(U+2013) | û(U+00FB) |
| 151(0x97) | 控制字符 EPA | —(U+2014) | ù(U+00F9) |
| 152(0x98) | 控制字符 SOS | ˜(U+02DC) | ÿ(U+00FF) |
| 153(0x99) | 控制字符 SGCI | ™(U+2122) | Ö(U+00D6) |
| 154(0x9A) | 控制字符 SCI | š(U+0161) | Ü(U+00DC) |
| 155(0x9B) | 控制字符 CSI | ›(U+203A) | ¢(U+00A2) |
| 156(0x9C) | 控制字符 ST | œ(U+0153) | £(U+00A3) |
| 157(0x9D) | 控制字符 OSC | 未定义 | ¥(U+00A5) |
| 158(0x9E) | 控制字符 PM | ž(U+017E) | ₧(U+20A7) |
| 159(0x9F) | 控制字符 APC | Ÿ(U+0178) | ƒ(U+0192) |
ASCII 和 Unicode 的区别、ASCII 和 UTF-8 的关系
ASCII 是 Unicode 的前 128 个码点:A 在 ASCII 里是 65,在 Unicode 里是 U+0041,数值完全相同。UTF-8 编码下这 128 个字符各占 1 个字节,与 ASCII 的字节一模一样, 这正是 UTF-8 能向下兼容老系统的原因。汉字、emoji 都不是 ASCII,全角字母 A 也不是——它是 U+FF21,对应的半角 ASCII 字符才是 A。
另一个常见混淆是键盘键码:JavaScript 的 keyCode 标识物理按键,A 键不论大小写都是 65;小键盘 0 的 keyCode 是 96,而 96 在 ASCII 码表里是反引号 `。键码不是 ASCII 码。
码表数据版本 2026.10,更新于 2026-10。ASCII 码位与控制字符缩写依据 ANSI X3.4-1986 与 IETF RFC 20,字符英文名与控制图形符号依据 Unicode 字符数据库, CP437 与 Windows-1252 映射依据 Unicode.org 发布的码页映射表;中文名称与用途说明为本站原创。扩展码页仅收录 ISO-8859-1、Windows-1252、CP437 三种。