欢迎来到字符编码的世界!🚀
你有没想过,电脑是如何知道屏幕上那一串“1”和“0”代表字母“A”,或者为什么你发送消息时会出现表情符号?在本章中,我们将探索电脑用来表示文字的“秘密代码”。这是你 H2 Computing 旅程中“数据与信息”单元的核心基础。
读完这些笔记后,你将能理解 ASCII 与 Unicode 之间的差异,并学会如何在 Python 程序中运用它们!
1. 核心概念:电脑如何“读取”信息
电脑本质上是大型计算器,它们只懂二进制(0 和 1)。它们无法直接“看到”字母或符号。为了解决这个问题,我们使用字符集 (Character Set)——这基本上是一个巨大的对照表(就像解码密码表一样),为每一个字符分配一个独特的数值。
比喻:想象一间图书馆,每本书都有一个特定的编号。你不必开口说要借《了不起的盖茨比》,只要说要借“第 402 号书”就可以了。字符编码就是一套系统,它告诉电脑“65”代表“A”。
2. ASCII:编码的基石
ASCII 的全名是 American Standard Code for Information Interchange(美国信息交换标准代码)。它是最早被广泛使用的编码系统之一。
关于 ASCII 的重点:
- 它使用 7 比特 (bits) 来表示每个字符。
- 使用 7 比特,它可以表示 \(2^7 = 128\) 个不同的字符。
- 这 128 个字符包括:
- 大写字母 (A-Z)
- 小写字母 (a-z)
- 数字 (0-9)
- 标点符号 (., !, ?, 等)
- 控制字符(如“Enter”或“Backspace”)
在程序中使用 ASCII (课程纲要 3.2.2)
在 Python 中,你可以通过两个内置函数轻松地在字符与其 ASCII (整数) 值之间进行转换。如果一开始觉得有点难,别担心——你只需要记住这两个工具:
1. ord():将字符转换为其整数代码。
示例: ord('A') 会返回 65。
2. chr():将整数代码转换回字符。
示例: chr(65) 会返回 'A'。
快速对照表:
字符: 'A' → ASCII: 65
字符: 'B' → ASCII: 66
字符: 'a' → ASCII: 97
字符: '0' → ASCII: 48
常见错误提醒:请记住,字符 '0'(文本)与数字 0 并不一样。在 ASCII 中,字符 '0' 是由数字 48 表示的!
重点总结:
ASCII 是一个简单的 7 比特系统(通常以 8 比特/1 字节存储),涵盖了基本的英文字符,但受限于只能表示 128 个字符。
3. Unicode:通用标准
随着电脑普及全球,128 个字符已远远不足。我们要如何表示中文、阿拉伯文、数学符号,或是“喜极而泣”的表情符号 😂 呢?
Unicode 的出现就是为了解决这个问题。它是一个规模更大的字符集,目标是涵盖全球所有语言的字符。
Unicode 的应用示例 (课程纲要 3.2.1):
- 现代网页浏览器:你访问的几乎每个网站都使用 Unicode(特别是一种称为 UTF-8 的格式),以便文字能在任何语言环境下正确显示。
- 操作系统:Windows、macOS 和 Linux 使用 Unicode 来处理文件名和系统文字。
- 社交媒体与通讯软件:当你在 WhatsApp 或 Telegram 发送表情符号时,你就是在用 Unicode。每个表情符号都有特定的 Unicode “码位 (code point)”。
- 国际化软件:任何允许切换语言(例如从英文切换到日文)的应用程序,都依赖 Unicode 来无缝切换字符集。
你知道吗?
Unicode 的前 128 个字符与 ASCII 完全相同。这使得 Unicode 具备“向下兼容性”,这代表旧的 ASCII 文件可以被现代的 Unicode 系统毫无问题地读取!
重点总结:
Unicode 是 ASCII 的“大哥”。它使用更多的比特(通常为 16 或 32 比特)来表示数以百万计的可能字符,使其成为现代全球化数字世界的标准。
4. 总结与比较
ASCII:
- 大小: 7 比特 (128 个字符)。
- 范围: 仅限英文。
- 用途: 简单的旧系统、基础程序设计练习。
Unicode:
- 大小: 可变(通常为 16 至 32 比特)。
- 范围: 全球(所有语言 + 表情符号)。
- 用途: 互联网、现代应用程序、全球通讯。
快速检测:自我测试!
1. 如果 ord('C') 是 67,那么 chr(68) 是什么?
(答案:'D')
2. 为什么我们不能使用 ASCII 来编写泰米尔语或中文文件?
(答案:ASCII 只有 128 个位置,且大部分已被英文字母和符号占用。它没有“空间”容纳其他语言。)
3. 请举出一个日常生活中使用 Unicode 的真实示例。
(答案:在消息中使用表情符号,或浏览外语网站。)
考试小撇步:如果考题问到为什么 Unicode 比 ASCII 更受欢迎,请务必提到“国际化 (Internationalisation)”或“支持更广泛的字符/语言范围”。