| 十进制 | 十六进制 | 字符 | 名称 | 分类 |
|---|
支持十进制(65)、十六进制(0x41 或 41h)、八进制(0o101)、二进制(0b1000001)、Unicode 写法(U+0041),也可以直接输入一个字符。结果即时更新,点击任意卡片即可复制。
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 条。
| 范围 | 分类 | 数量 | 内容 |
|---|---|---|---|
| 0—31 | 控制字符 | 32 | NUL、BEL、ESC 等不可打印字符 |
| 32 | 空白字符 | 1 | 空格(SP) |
| 33—47 | 标点符号 | 15 | ! " # $ % & ' ( ) * + , - . / |
| 48—57 | 数字 | 10 | 0—9 |
| 58—64 | 标点符号 | 7 | : ; < = > ? @ |
| 65—90 | 大写字母 | 26 | A—Z |
| 91—96 | 标点符号 | 6 | [ \ ] ^ _ ` `` |
| 97—122 | 小写字母 | 26 | a—z |
| 123—126 | 标点符号 | 4 | { ` |
| 127 | 控制字符 | 1 | DEL(删除) |
注意几个设计上的巧合,它们让编码转换变得非常方便:
'9' - '0' 恰好等于 9;'a' - 'A' == 32,大小写转换只需加减 32 或翻转第 6 位;0—31 与 127 共 33 个控制字符,它们不显示任何字形,而是用来控制设备行为。其中几个至今仍然天天在用:
| 缩写 | 十进制 | 十六进制 | 含义 |
|---|---|---|---|
| LF | 10 | 0x0A | 换行(Line Feed) |
| CR | 13 | 0x0D | 回车(Carriage Return) |
| TAB | 9 | 0x09 | 水平制表符 |
| ESC | 27 | 0x1B | 转义,终端控制序列的起始符 |
| BEL | 7 | 0x07 | 响铃,终端输出 \a 会响一声 |
| NUL | 0 | 0x00 | 空字符,C 语言字符串的结束标记 |
| DEL | 127 | 0x7F | 删除,键盘 Delete 键的早期对应字符 |
换行符的平台差异是新手最容易踩的坑:Unix / Linux 与 macOS 用 LF(0x0A),Windows 用 CR + LF(0x0D 0x0A),而经典的 Mac OS(9 及更早)用单独的 CR。这就是为什么跨平台传文本时偶尔会出现「整个文件变成一行」或「每行末尾多一个方块」。
ASCII 只有 7 位,第 8 位空着。ISO-8859-1(Latin-1)把 128—255 这段空间利用起来,补上了西欧语言所需的带音标字母(à á â ä ç é è ñ ö ü 等)与常用符号(© ® ° ± × ÷ ¼ ½ ¾ 等)。
在 UTF-8 中,Latin-1 的 160—255 这些字符需要 2 个字节表示。这一点在做文件体积估算时很有用:一段全是中文和西欧符号的文本,UTF-8 编码后的字节数会明显大于字符数。
A、¥)、十进制(65)、十六进制(0x41)或名称(换行、版权);转换器支持这些输入格式:65(十进制)、0x41 或 41h(十六进制)、0o101(八进制)、0b1000001(二进制)、U+4E2D(Unicode 写法),也可以直接输入一个字符,例如 A 或 ¥。
排查乱码时,把可疑字符转成十六进制往往能立刻定位问题。例如页面显示 锟斤拷,查表会发现这几个字都是 U+FFFD(替换字符)的错误组合——它表示「某个环节遇到了无法解码的字节,用占位符代替了」。顺着这个线索去检查页面的 Content-Type、数据库连接字符集和文件本身的编码,通常很快就能找到根因。
表里的十六进制为什么统一写成 0x 前缀?
ESC 和 BEL 这些控制字符现在还用吗?
页面出现乱码时怎么用这个表排查?
NUL 字符有什么用?
页面上的进制转换器支持哪些输入格式?
Latin-1 字符在 UTF-8 里占几个字节?
Latin-1 是什么?
换行符在不同系统里为什么不一样?
为什么大写字母和小写字母相差 32?
怎么快速判断一个字符是否可打印?
ASCII 和 UTF-8 是什么关系?
ASCII 一共有多少个字符?