ToolAct工具行动

ASCII 码表查询

完整的 ASCII 字符编码对照表,包含控制字符、可打印字符和扩展字符

共 256 个字符
十进制十六进制字符描述
00x00-空字符
10x01-标题开始
20x02-正文开始
30x03-正文结束
40x04-传输结束
50x05-请求
60x06-确认应答
70x07-响铃
80x08-退格
90x09-水平制表符
100x0A-换行
110x0B-垂直制表符
120x0C-换页
130x0D-回车
140x0E-移出
150x0F-移入
160x10-数据链路转义
170x11-设备控制1
180x12-设备控制2
190x13-设备控制3
200x14-设备控制4
210x15-否定应答
220x16-同步空闲
230x17-传输块结束
240x18-取消
250x19-媒介结束
260x1A-替换
270x1B-转义
280x1C-文件分隔符
290x1D-组分隔符
300x1E-记录分隔符
310x1F-单元分隔符
1270x7F-删除
320x20空格
330x21!感叹号
340x22"双引号
350x23#井号
360x24$美元符号
370x25%百分号
380x26&和号
390x27'单引号
400x28(左括号
410x29)右括号
420x2A*星号
430x2B+加号
440x2C,逗号
450x2D-连字符
460x2E.句号
470x2F/斜杠
480x300数字 0
490x311数字 1
500x322数字 2
510x333数字 3
520x344数字 4
530x355数字 5
540x366数字 6
550x377数字 7
560x388数字 8
570x399数字 9
580x3A:冒号
590x3B;分号
600x3C<小于号
610x3D=等号
620x3E>大于号
630x3F?问号
640x40@艾特符号
650x41A大写字母 A
660x42B大写字母 B
670x43C大写字母 C
680x44D大写字母 D
690x45E大写字母 E
700x46F大写字母 F
710x47G大写字母 G
720x48H大写字母 H
730x49I大写字母 I
740x4AJ大写字母 J
750x4BK大写字母 K
760x4CL大写字母 L
770x4DM大写字母 M
780x4EN大写字母 N
790x4FO大写字母 O
800x50P大写字母 P
810x51Q大写字母 Q
820x52R大写字母 R
830x53S大写字母 S
840x54T大写字母 T
850x55U大写字母 U
860x56V大写字母 V
870x57W大写字母 W
880x58X大写字母 X
890x59Y大写字母 Y
900x5AZ大写字母 Z
910x5B[左方括号
920x5C\反斜杠
930x5D]右方括号
940x5E^脱字符
950x5F_下划线
960x60`反引号
970x61a小写字母 a
980x62b小写字母 b
990x63c小写字母 c
1000x64d小写字母 d
1010x65e小写字母 e
1020x66f小写字母 f
1030x67g小写字母 g
1040x68h小写字母 h
1050x69i小写字母 i
1060x6Aj小写字母 j
1070x6Bk小写字母 k
1080x6Cl小写字母 l
1090x6Dm小写字母 m
1100x6En小写字母 n
1110x6Fo小写字母 o
1120x70p小写字母 p
1130x71q小写字母 q
1140x72r小写字母 r
1150x73s小写字母 s
1160x74t小写字母 t
1170x75u小写字母 u
1180x76v小写字母 v
1190x77w小写字母 w
1200x78x小写字母 x
1210x79y小写字母 y
1220x7Az小写字母 z
1230x7B{左花括号
1240x7C|竖线
1250x7D}右花括号
1260x7E~波浪号
1280x80€
1290x81
1300x82‚
1310x83ƒ
1320x84„
1330x85…
1340x86†
1350x87‡
1360x88ˆ
1370x89‰
1380x8AŠ
1390x8B‹
1400x8CŒ
1410x8D
1420x8EŽ
1430x8F
1440x90
1450x91‘
1460x92’
1470x93“
1480x94”
1490x95•
1500x96–
1510x97—
1520x98˜
1530x99™
1540x9Aš
1550x9B›
1560x9Cœ
1570x9D
1580x9Ež
1590x9FŸ
1600xA0 
1610xA1¡
1620xA2¢
1630xA3£
1640xA4¤
1650xA5¥
1660xA6¦
1670xA7§
1680xA8¨
1690xA9©
1700xAAª
1710xAB«
1720xAC¬
1730xAD­
1740xAE®
1750xAF¯
1760xB0°
1770xB1±
1780xB2²
1790xB3³
1800xB4´
1810xB5µ
1820xB6
1830xB7·
1840xB8¸
1850xB9¹
1860xBAº
1870xBB»
1880xBC¼
1890xBD½
1900xBE¾
1910xBF¿
1920xC0À
1930xC1Á
1940xC2Â
1950xC3Ã
1960xC4Ä
1970xC5Å
1980xC6Æ
1990xC7Ç
2000xC8È
2010xC9É
2020xCAÊ
2030xCBË
2040xCCÌ
2050xCDÍ
2060xCEÎ
2070xCFÏ
2080xD0Ð
2090xD1Ñ
2100xD2Ò
2110xD3Ó
2120xD4Ô
2130xD5Õ
2140xD6Ö
2150xD7×
2160xD8Ø
2170xD9Ù
2180xDAÚ
2190xDBÛ
2200xDCÜ
2210xDDÝ
2220xDEÞ
2230xDFß
2240xE0à
2250xE1á
2260xE2â
2270xE3ã
2280xE4ä
2290xE5å
2300xE6æ
2310xE7ç
2320xE8è
2330xE9é
2340xEAê
2350xEBë
2360xECì
2370xEDí
2380xEEî
2390xEFï
2400xF0ð
2410xF1ñ
2420xF2ò
2430xF3ó
2440xF4ô
2450xF5õ
2460xF6ö
2470xF7÷
2480xF8ø
2490xF9ù
2500xFAú
2510xFBû
2520xFCü
2530xFDý
2540xFEþ
2550xFFÿ

什么是 ASCII 码?

ASCII(美国信息交换标准代码)是一种基于拉丁字母的字符编码标准。它最初在20世纪60年代为电报通信开发,后来成为计算机领域最基础的字符编码系统。标准 ASCII 码包含 128 个字符(0-127),包括 33 个控制字符和 95 个可打印字符。扩展 ASCII(128-255)另外增加了 128 个字符用于符号和国际字符,但编码方式因地区而异。

使用方法

基本操作

  1. 点击任意数值或字符即可复制
  2. 使用搜索框快速查找特定字符
  3. 点击分类按钮按字符类型筛选
  4. 将鼠标悬停在字符上查看详细说明

编码说明

  • ASCII 仅覆盖 0–127 字符范围;带重音字母、表情符号以及绝大多数非英文文本都需要 UTF-8 等 Unicode 编码。
  • 控制字符可能无法直观显示,但仍会影响文件、终端、协议及复制粘贴的内容。

使用场景

查找可见或不可见字符的精确编码按字符、十进制值、十六进制值或描述进行搜索,确认空格 32、LF 0x0A、CR 0x0D、ESC 0x1B 或大写 A 65 等条目,用于调试文本处理。页面是一个纯参考工具,输入框的内容不会被发送到任何地方,搜索仅针对内嵌的 128 条 ASCII 数据进行,内部代码点、日志片段和协议常量都可以在不上传的情况下查询。
区分控制字符和可打印字符当日志、串口消息、CSV 文件或终端输出中包含屏幕上不显示但仍会影响解析行为的字符时,使用控制字符、可打印字符和扩展字符筛选器。由于不会收集任何字符数据,同样的筛选器也可以用来培训新人、制作参考卡片或审计解析器的预期行为,不会在后端留下任何记录。
将参考值复制到代码或文档中编写解析器测试、协议说明、键盘参考、转义序列解释或旧系统集成文档时,点击表格行中的值即可复制。对于 128-255 的扩展值,仍需确认目标代码页,因为表格列出的是码位位置,无法知道目标系统实际使用哪个代码页进行解码。
无需翻阅手册即可解码转义序列将 \x1B[31m、\r\n 或 \t 等序列粘贴到搜索框中,即可查看十进制、十六进制和二进制值以及可打印字符的渲染。当终端输出或日志行出现乱码,需要确认原始字节是控制字符还是代码页产物时非常有用。查找仅在页面内的表格中进行,来自生产系统的终端捕获内容不会离开浏览器。
为解析器构建可打印字符清单筛选出可打印字符,在定义严格解析器的白名单之前审查这 95 个 ASCII 范围。这有助于发现关于空白字符、标点符号和引号字符的假设,这些假设在编程语言、Shell、终端输出和 CSV 方言之间经常存在差异。清单来自页面自身的静态数据集,引用它不依赖网络可用性或外部文档。

技术原理

ASCII(美国信息交换标准代码,ANSI X3.4-1968,ISO/IEC 646:1991 IRV)是一种 7 位字符编码,为 128 个字符分配 0-127 的数值编码。低 32 个编码(0x00-0x1F)加上 0x7F 是从电传打字机继承而来的控制字符:NUL(0x00)、BEL(0x07,响铃)、LF(0x0A,换行)、CR(0x0D,回车)、ESC(0x1B)、DEL(0x7F)等。0x20-0x7E 是可打印字符:空格、数字 0-9 在 0x30-0x39、大写字母 A-Z 在 0x41-0x5A、小写字母 a-z 在 0x61-0x7A,以及它们之间的标点符号。 该编码具有刻意设计的规整结构。数字是连续排列的:'0' = 0x30,'1' = 0x31,...,'9' = 0x39。将数字字符转换为数值只需 `code - 0x30`。字母同样连续排列:'A' = 0x41,'B' = 0x42,...,'Z' = 0x5A,'a' = 0x61,...,'z' = 0x7A。同一字母的大写和小写之间的差值是 0x20(32),恰好是第 5 位被置位(1 << 5 = 32)。这使得大小写转换只需一次 XOR 或 OR/AND 操作:`code ^ 0x20` 翻转大小写,`code | 0x20` 转小写,`code & 0x5F`(即 `code & ~0x20`)转大写。这个位操作技巧是最快的大小写转换方式,出现在 strlen/strcmp 等仅处理 ASCII 字符串的实现中。 ASCII 是为 7 位电传打字机及其前身 5 位 Baudot 编码设计的,因此早于 8 位字节。8 位'扩展 ASCII'范围(0x80-0xFF)从未标准化,这就是为什么有那么多代码页(ISO 8859-1 Latin-1、Windows-1252、MacRoman、KOI8-R、IBM437)在高半区互相竞争。ISO 8859-1(Latin-1)是最接近标准的,但直到 ISO 8859-15 才加入欧元符号。C1 控制范围(0x80-0x9F)本应保留(ISO 6429),但 Windows-1252 将其中一部分用于可打印字符——这是一个长期存在的互操作性痛点,最终由 UTF-8 解决。 UTF-8(RFC 3629,2003 年)由 Rob Pike 和 Ken Thompson 于 1992 年设计,作为向后兼容的超集:128 个 ASCII 编码以单字节(0x00-0x7F)编码为自身,因此任何 ASCII 文本同时也是合法的 UTF-8 文本。0x7F 以上的编码使用 2、3 或 4 字节序列,具有特定的位模式(110xxxxx 10xxxxxx、1110xxxx 10xxxxxx 10xxxxxx、11110xxx 10xxxxxx 10xxxxxx 10xxxxxx),使解码器在出错后可以逐字节重新同步。相比之下,EBCDIC 是 IBM 的 8 位大型机编码(8 位 EBCDIC 是 8 位的,不像 ASCII 是 7 位),将字母分配到不连续的编码点('A' = 0xC1,'I' = 0xC9,'J' = 0xD1,...,有间隔,不利于位操作和字符串算法)。 ISO 646 的国家变体将一小部分 ASCII 字符替换为特定国家的字母。例如英国变体将 0x23(美国的 '#')替换为英镑符号 '£',德国变体将一些标点替换为元音变音符。这就是 C 语言的 locale 设置和 POSIX charmap 文件在历史上重要的原因——它们在 IRV(国际参考版本)和国家变体之间进行映射。摆脱这一困境的出路是 Unicode / UTF-8,它使得整个 7 位和 8 位的争论对任何新项目都成为历史。

  • ASCII(ANSI X3.4-1968,ISO/IEC 646 IRV)每个字符使用 7 位,共 128 个编码点:33 个控制字符(0x00-0x1F,0x7F)和 95 个可打印字符(0x20-0x7E)。
  • 控制字符(0x00-0x1F,0x7F)继承自电传打字机:NUL、BEL(0x07,响铃)、LF(0x0A)、CR(0x0D)、ESC(0x1B)、DEL(0x7F)。现代文本仍在使用 LF 和 CR;其余大多已成为历史。
  • 可打印字符布局:空格(0x20)、数字 '0'-'9'(0x30-0x39)、大写 'A'-'Z'(0x41-0x5A)、小写 'a'-'z'(0x61-0x7A)、中间的标点符号。将 '5' 转为 5 只需 `code - 0x30`;大写转小写用 `code | 0x20`。
  • 大小写转换是单次位操作:XOR 0x20 翻转大小写;OR 0x20 转小写;AND 0x5F(即 `code & ~0x20`)转大写。这是所有语言中最快的大小写转换方式,也是 strlen/strcmp 在纯 ASCII 缓冲区上的工作原理。
  • 8 位扩展(0x80-0xFF)从未标准化,因此 Windows-1252、ISO-8859-1、MacRoman、KOI8-R、IBM437 对高半区的定义各不相同。Windows-1252 在 Web 上胜出,是大多数旧代码实际使用的'扩展 ASCII'。
  • UTF-8(RFC 3629,Pike & Thompson 1992 年)是 ASCII 的严格超集:128 个 ASCII 编码点以 1 字节编码为自身;U+007F 以上的编码点使用 2-4 字节,带有 110xxxxx 10xxxxxx 等延续字节,使解码器在出错后可以逐字节重新同步。
  • EBCDIC(IBM,1960 年代大型机)是 ASCII 的 8 位替代方案,用于 IBM z/OS。字母位置不连续('A'=0xC1,'I'=0xC9,'J'=0xD1),因此 ASCII 的大小写转换技巧不适用,tolower() 等位移算法需要查表。
  • ISO 646 国家变体(英国、德国、瑞典等)将一小部分 ASCII 字符替换为特定国家的字母:英国变体将 '#' 替换为 '£'(0x23),德国变体将标点替换为元音变音符。Unicode 之前本地化工作的缩影。

示例

快速查字符

字符: 'A'
  十进制:  65
  十六进制: 0x41
  二进制:   01000001
  八进制:   0101
  C 转义:   \x41  (在 C / C++ / Python / JavaScript 中写作 '\x41')

大小写之间正好相差 0x20(十进制 32):
  'a' = 0x61 (97)    =  'A' (0x41) + 0x20
  'A' = 0x41 (65)    =  'a' (0x61) - 0x20
所以翻转第 5 位(掩码 0x20)就能切换字母大小写。

  ch ^ 0x20   可以在 A 和 a 之间互转(对 A-Z / a-z 有效,其他字符不变)

排查换行符问题

LF   (0x0A,十进制 10)        - Unix、Linux、新版 macOS  '\n'
CR   (0x0D,十进制 13)        - 经典 Mac OS(OS X 之前)和部分网络协议  '\r'
CRLF (0x0D 0x0A,'13 10')     - Windows、HTTP、SMTP、FTP  '\r\n'

Windows 下保存的 'hi\r\n' 文件十六进制 dump:
  0000:  68 69 0d 0a         hi..

同样内容在 Linux 下保存('hi\n')的 dump:
  0000:  68 69 0a            hi.

对行数统计的影响:
  $ wc -l windows.txt unix.txt
       1 windows.txt    (1 个换行,0x0D 0x0A)
       1 unix.txt       (1 个换行,0x0A)
  字节数不同(4 vs 3),dos2unix 之类工具就是通过扫描 0x0D 0x0A
  序列并去掉 0x0D 来识别和转换的。

URL 编码参考

RFC 3986 的非保留字符 + 保留字符集合(其余字符必须做百分号编码):
  非保留字符  A-Z a-z 0-9 - _ . ~
  保留字符    ! * ' ( ) ; : @ & = + $ , / ? # [ ]
  其他字符一律编码为 %HH,HH 为两位大写十六进制

常见字符:
  空格     0x20  ->  %20   (在 application/x-www-form-urlencoded 中也可以写成 '+')
  !        0x21  ->  %21
  "        0x22  ->  %22
  #        0x23  ->  %23
  $        0x24  ->  %24
  %        0x25  ->  %25
  &        0x26  ->  %26   (查询字符串的分隔符 — 出现在值里时必须编码)
  '        0x27  ->  %27
  (        0x28  ->  %28
  )        0x29  ->  %29
  +        0x2B  ->  %2B   (在表单 body 里要写成 %20,因为 '+' 表示空格)
  ,        0x2C  ->  %2C
  /        0x2F  ->  %2F   (路径中是保留字符,查询里通常可以原样)
  :        0x3A  ->  %3A
  ;        0x3B  ->  %3B
  =        0x3D  ->  %3D
  ?        0x3F  ->  %3F
  @        0x40  ->  %40

例子:    https://example.com/path with space and ampersand
编码后:  https://example.com/path%20with%20space%20%26%20ampersand

控制字符转义和正则元字符

C / Python / JavaScript 字符串中常见的控制字符及其转义形式:
  NUL  0x00  '\0'         (C 语言中的字符串结束符)
  BEL  0x07  '\a'         (终端响铃)
  BS   0x08  '\b'         (退格)
  TAB  0x09  '\t'         (水平制表符)
  LF   0x0A  '\n'         (换行)
  VT   0x0B  '\v'         (垂直制表符)
  FF   0x0C  '\f'         (换页)
  CR   0x0D  '\r'         (回车)
  ESC  0x1B  '\x1b' / '\e' (POSIX)  (转义序列起始字符)
  DEL  0x7F  '\x7f'       (删除)

正则中必须用 \ 转义的元字符:
  ^ $ . | ? * + ( ) [ ] { } \

下面这段 JavaScript 可以输出和上表一致的内容:
  const ctrl = { 0:'NUL', 9:'TAB', 10:'LF', 13:'CR', 27:'ESC', 32:'SP', 127:'DEL' };
  for (const [code, name] of Object.entries(ctrl)) {
    console.log(`${code.toString().padStart(3)}  0x${(+code).toString(16).padStart(2,'0')}  ${name}`);
  }
  // ->  ' 0x20 SP'   0a LF   0d CR   等等

常见问题

ASCII 表一共有多少个字符?

标准 ASCII 共有 128 个码位(0-127):33 个控制字符(0-31 加上 127 DEL)和 95 个可打印字符(从空格到 ~)。所谓"扩展 ASCII"指的是 Windows-1252、ISO-8859-1 等 256 码位的单字节编码,严格来说并不属于 ASCII。

为什么 32 号字符显示为 "Space" 而不是可见图形?

码位 32(0x20)就是空格字符本身,可打印但不可见。表格用 SP 或 Space 作为标签便于识别;点击该行复制时,剪贴板里得到的仍是真正的空格字符。

前 32 个 ASCII 码位是用来做什么的?

它们都是源自电传打字机时代的控制字符:TAB(9)、LF(10)、CR(13)、ESC(27)等等。现代软件仍在使用 TAB、LF、CR 和 NUL(0);其他像 BEL、ACK、ENQ 等基本只剩历史意义,仅在串口协议或二进制文件头中偶尔出现。

ASCII 和 UTF-8 是一回事吗?

ASCII 是 7 位编码,只覆盖英文。UTF-8 是变长编码,前 128 个码位与 ASCII 完全字节兼容——任何纯 ASCII 文件同时也是合法的 UTF-8。UTF-8 通过 2 到 4 字节的组合扩展,能表示整个 Unicode 字符集。

怎样在十进制、十六进制和二进制之间换算单个字符?

在表格中选中一行即可看到四种表示。例如字母 A:十进制 65、十六进制 0x41、八进制 0101、二进制 01000001。Char 列显示字符本身,Description 列给出官方 Unicode 名称。

为什么表格里没有 é、ñ 或 中?

这些字符不在 ASCII 范围内。é 和 ñ 属于 Latin-1(码位 233 和 241),中 属于 CJK 统一表意文字(U+4E2D)。查询这些字符请使用 Unicode 工具,ASCII 只覆盖到码位 127。

如果只知道 ASCII 码,怎么打出对应的字符?

在 Windows 上按住 Alt,并在数字小键盘上输入十进制码(Alt+65 = A)。在 macOS 和 Linux 上可以从本表复制,或使用输入法的十六进制输入功能。在代码中可用 \xNN(十六进制)、\NNN(八进制)、Python 的 chr(N) 或 JavaScript 的 String.fromCharCode(N)。