ASCII字符参考表

十进制 十六进制 字符 名称 分类

进制与字符互转

支持十进制(65)、十六进制(0x41 或 41h)、八进制(0o101)、二进制(0b1000001)、Unicode 写法(U+0041),也可以直接输入一个字符。结果即时更新,点击任意卡片即可复制。

65 0x41 0b1000001 0o101 U+4E2D ¥ 10(换行)
收录 ASCII 全部 128 个字符及 96 个 Latin-1 扩展字符,含十进制、十六进制、名称与分类,并内置进制与字符互转工具。

ASCII 是什么

ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)诞生于 1963 年,是计算机历史上最成功的编码标准之一。它用 7 位二进制表示 128 个字符,编号从 0 到 127。

这 128 个字符构成了今天所有字符编码的基础:UTF-8 的前 128 个码位与 ASCII 完全兼容,也就是说,一段纯 ASCII 文本,无论按 ASCII 还是 UTF-8 解读,结果完全一样——这是 UTF-8 能迅速普及的关键原因。

本表收录 ASCII 全部 128 个字符*,并额外补充了 *96 个 Latin-1 扩展字符,共 224 条。


128 个字符是怎么划分的

范围分类数量内容
0—31控制字符32NUL、BEL、ESC 等不可打印字符
32空白字符1空格(SP)
33—47标点符号15! " # $ % & ' ( ) * + , - . /
48—57数字100—9
58—64标点符号7: ; < = > ? @
65—90大写字母26A—Z
91—96标点符号6[ \ ] ^ _ ` ``
97—122小写字母26a—z
123—126标点符号4{ `
127控制字符1DEL(删除)

注意几个设计上的巧合,它们让编码转换变得非常方便:

  • 数字与字母在码表上连续排列,所以 '9' - '0' 恰好等于 9;
  • 大写字母与小写字母相差 32,所以 'a' - 'A' == 32,大小写转换只需加减 32 或翻转第 6 位;
  • 控制字符集中在前 32 位,所以判断是否可打印只需比较码值是否大于 32。

控制字符:看不见但很重要

0—31 与 127 共 33 个控制字符,它们不显示任何字形,而是用来控制设备行为。其中几个至今仍然天天在用:

缩写十进制十六进制含义
LF100x0A换行(Line Feed)
CR130x0D回车(Carriage Return)
TAB90x09水平制表符
ESC270x1B转义,终端控制序列的起始符
BEL70x07响铃,终端输出 \a 会响一声
NUL00x00空字符,C 语言字符串的结束标记
DEL1270x7F删除,键盘 Delete 键的早期对应字符

换行符的平台差异是新手最容易踩的坑:Unix / Linux 与 macOS 用 LF(0x0A),Windows 用 CR + LF(0x0D 0x0A),而经典的 Mac OS(9 及更早)用单独的 CR。这就是为什么跨平台传文本时偶尔会出现「整个文件变成一行」或「每行末尾多一个方块」。


Latin-1 扩展:从 128 到 255

ASCII 只有 7 位,第 8 位空着。ISO-8859-1(Latin-1)把 128—255 这段空间利用起来,补上了西欧语言所需的带音标字母(à á â ä ç é è ñ ö ü 等)与常用符号(© ® ° ± × ÷ ¼ ½ ¾ 等)。

在 UTF-8 中,Latin-1 的 160—255 这些字符需要 2 个字节表示。这一点在做文件体积估算时很有用:一段全是中文和西欧符号的文本,UTF-8 编码后的字节数会明显大于字符数。


使用方式

  1. 查表:搜索字符本身(A、¥)、十进制(65)、十六进制(0x41)或名称(换行、版权);
  2. 复制:点击十进制、十六进制或字符列的内容即可复制;
  3. 互转:在下方「进制与字符互转」中输入任意一种写法,即时得到它在十进制、十六进制、八进制、二进制、HTML 实体下的全部表示。

转换器支持这些输入格式:65(十进制)、0x41 或 41h(十六进制)、0o101(八进制)、0b1000001(二进制)、U+4E2D(Unicode 写法),也可以直接输入一个字符,例如 A 或 ¥。


一个实际用途

排查乱码时,把可疑字符转成十六进制往往能立刻定位问题。例如页面显示 锟斤拷,查表会发现这几个字都是 U+FFFD(替换字符)的错误组合——它表示「某个环节遇到了无法解码的字节,用占位符代替了」。顺着这个线索去检查页面的 Content-Type、数据库连接字符集和文件本身的编码,通常很快就能找到根因。

常见问题 FAQ

表里的十六进制为什么统一写成 0x 前缀?

0x 是编程语言中通用的十六进制前缀写法,便于直接复制到代码、抓包工具或调试器中使用。

ESC 和 BEL 这些控制字符现在还用吗?

还在用。ESC(0x1B)是终端控制序列的起始符,用于设置颜色和光标位置;BEL(0x07)在终端输出时会触发响铃。

页面出现乱码时怎么用这个表排查?

把可疑字符转成十六进制对照本表,例如「锟斤拷」对应的都是 U+FFFD 替换字符,说明某个环节遇到了无法解码的字节,可顺着检查 Content-Type 与数据库字符集。

NUL 字符有什么用?

NUL(0x00)是 C 语言字符串的结束标记,也是很多二进制协议的填充字节。它不可打印,但会占用空间。

页面上的进制转换器支持哪些输入格式?

支持十进制(65)、十六进制(0x41 或 41h)、八进制(0o101)、二进制(0b1000001)、Unicode 写法(U+0041),也可以直接输入单个字符。

Latin-1 字符在 UTF-8 里占几个字节?

160 到 255 的字符在 UTF-8 下占 2 个字节,所以估算文本体积时,字节数会大于字符数。

Latin-1 是什么?

ISO-8859-1 的别名,把 ASCII 空置的第 8 位利用起来,补充了西欧语言的带音标字母与常用符号,范围是 128 到 255。

换行符在不同系统里为什么不一样?

Unix / Linux 与 macOS 用 LF(0x0A),Windows 用 CR+LF(0x0D 0x0A),早期 Mac OS 用单独的 CR。这是跨平台传文本出现「变成一行」的原因。

为什么大写字母和小写字母相差 32?

这是 ASCII 设计上的巧妙安排,`a` 减 `A` 恰好等于 32。因此大小写转换只需加减 32,或翻转二进制第 6 位。

怎么快速判断一个字符是否可打印?

ASCII 中码值大于 32 且不等于 127 的字符可打印,0 到 31 以及 127 是控制字符,不显示字形。

ASCII 和 UTF-8 是什么关系?

UTF-8 的前 128 个码位与 ASCII 完全兼容。一段纯 ASCII 文本按 ASCII 或 UTF-8 解读结果相同,这是 UTF-8 能迅速普及的关键原因。

ASCII 一共有多少个字符?

标准 ASCII 共 128 个,编号 0 到 127,用 7 位二进制表示。本表还额外收录了 96 个 Latin-1 扩展字符。