歡迎來到字元編碼的世界!🚀
你有沒有想過,電腦是如何知道螢幕上那一串「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)」或「支援更廣泛的字元/語言範圍」。