惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园_首页
Blog — PlanetScale
Blog — PlanetScale
腾讯CDC
aimingoo的专栏
aimingoo的专栏
Microsoft Azure Blog
Microsoft Azure Blog
A
About on SuperTechFans
J
Java Code Geeks
G
Google Developers Blog
N
Netflix TechBlog - Medium
Vercel News
Vercel News
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
I
InfoQ
Stack Overflow Blog
Stack Overflow Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
T
The Blog of Author Tim Ferriss
罗磊的独立博客
GbyAI
GbyAI
小众软件
小众软件
大猫的无限游戏
大猫的无限游戏
WordPress大学
WordPress大学
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派
ASCII 与 Unicode: 计算机语言的进化史 - 少数派
2025-08-22 · via 少数派

今天我们敲击键盘输入的 A、B、C,对人来说是字母,但对计算机来说,它们只是 0 和 1。

那么,计算机是怎么理解 A 代表大写字母 A,而不是随意的数字呢?

答案就是 —— ASCII 码。

ASCII

在 1960 年代,美国的电传打字机(Teletype,TTY)厂商都有自己的“字符集”,互不兼容,通信很麻烦。

每个字母都需要转换为电信号(0/1脉冲)传输,当时电报系统通常使用 5 位(Baudot code)、6 位(Fielddata code)表示字符。

美国标准协议(ASA,后来改名为 ANSI)在 1963 年发布了 ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)。

ASCII是第一套被广泛采用的基于英文的字符编码标准,使用 7 位二进制数(bit)来表示字符,最多能表示 2^7 = 128 个符号。

图片中的 ASCII 表,纵轴和横轴组合成 7 位二进制。

字符示例

例如 5 的ASCII 码:

先看上面的b7、b6、b5,对应的数值为 011;

再看左侧的b4、b3、b2、b1,对应的数值为 0101。

所以 5 的 ASCII 码二进制表示为 011 0101,十进制表示为 53。

ASCII和计算机的关系

1、计算机存储单位的由来

计算机的 CPU、内存芯片、总线设计决定了“最小一次能读/写多少位”。

早期有 6 位机器(DEC PDP-6)、9 位机器(CDC 6600),在存储单位上并不统一。

后来逐渐统一为 8 位作为最小存储单位。

原因

1、ASCII 完全可以放进 8 位,并利用剩下的 1 位做校验/扩展;

2、8 位与二进制十六进制自然对齐(1 Byte = 8 bit = 2 个十六进制数)。

3、内存对齐效率高(字节寻址比“位寻址”简单得多)。

于是,硬件厂商逐渐把 8 bit 作为最小寻址单位,称为 Byte(字节)。

ASCII 虽然只有 7 位(bit),这也就意味着存储的时候,通常会将最高位(第 8 位)填 0。

注:bit 是计算机最小的存储单位,只能存储 0 或 1,通常使用小写字母 b 表示。1 Byte = 8 bit,也就是一个 ASCII 字符,通常使用大写字母 B 表示。

2、ASCII的历史时间线

1963:ASCII 初版发布(7位,128个字符)。

1968:美国总统林登·约翰逊签署行政命令,要求所有美国联邦政府计算机必须支持 ASCII,这推动了 ASCII 的普及。

1970s:IBM、DEC 等大厂采用 ASCII,ASCII 成为计算机与终端通信的通用语言。

1981:IBM PC(个人电脑)发布,采用扩展 ASCII(8 位,256 个字符),彻底把 ASCII 推向全球。

扩展ASCII

在 1980 年代,计算机开始走向国际化, ASCII只支持英文,欧洲国家、科学符号、图像字符都无法使用。

ASCII只使用 7 位二进制数字符,第 8 位默认填 0,所以各个厂商就把最高位从 0 改成 1,定义额外的字符,这就是扩展ASCII。

扩展ASCII使用 8 位二进制数来表示字符,最多能表示 2^8 = 256 个符号。

在ASCII的基础(0-127,和ASCII保持一致)上,增加了 128 个额外字符:

1、各种语言的重音符号字母(é, ñ, ü);

2、线条符号、特殊图形;

3、一些数学符号。

因厂商不同所以扩展标准不同:

1、IBM PC 定义了带有笑脸、框线、希腊字母等符号。

2、ISO 制定了 ISO 8859 系列(如 ISO-8859-1 “Latin-1”,包含西欧字符 é、ñ 等)。

例如,é 可能 = 233 (0xE9);

ç 可能 = 231 (0xE7)。

3、Macintosh 有 MacRoman 编码。

4、Windows 有 Windows-1252 编码;

所以,扩展ASCII并不是一个统一的标准,在 8 位字节中,前 128 位兼容ASCII,后 128 位各自扩展各自厂商的编码。

Unicode编码

ASCII 是一切的开端,但它只有 128 个字符,只能覆盖英语世界。随着全球化的不断发展,扩展ASCII出现了“乱码问题”:

1、在法语电脑上,128–255 是 é、à 等。

2、在俄语电脑上,128–255 是 кириллица(西里尔字母)。

3、在 PC 上,128–255 可能是框线符号。

在计算机上相同的一个字节值,显示的字符完全不同,这是因为各厂商扩展 ASCII 各搞各的,互相不兼容。

为了解决这个问题,Unicode联盟成立于1991年,Unicode 1.0 规范发布在 1991–1992 年。它几乎囊括了全世界的文字符号(现在甚至超过 100 万字符), 定义了全球统一的字符集,每个字符分配唯一编码,ASCII 范围(0–127)完全兼容,保证历史兼容性。包括 emoji、中文、阿拉伯文等等。

例如,😊 = U+1F60A,U+表示这是一个Unicode code point(码点),1F60A 是一个十六进制数,换算成十进制就是 128522。

在UTF-8中占4字节:

注:UTF-8是Unicode的一种实现方式,还有UTF-16、UTF-32。

总结

ASCII 是计算机的第一套字符标准,让机器能理解 A-Z、0-9、标点和控制符。

ASCII使用 7 位二进制,能表示 128 个字符;扩展ASCII 使用 8 位二进制,最多表示 256 个字符,不同国家/厂商定义不一样;Unicode统一了扩展ASCII互不兼容的问题。

ASCII 奠定了现代编码的基础,直到今天依然在 Unicode 里占据重要位置。

所以,下次在电脑中输入 A 的时候,可以想一想 —— 在计算机眼里,它其实只是 0100 0001。

扩展图文

标准ASCII码

扩展ASCII码