即使不是開發者,您可能也聽過「ASCII」這個詞。在網路上衝浪時,您可能遇到文字亂碼,讓文字看起來像外星語的現象,或者遇到技術性錯誤訊息例如「ASCII碼不相容」。

究竟這個ASCII碼是什麼,以至於它被視為數位世界的「通用語言」呢?今天我們就來了解,電腦如何理解人類語言這一最基本的約定,也就是ASCII碼。


1. 電腦只懂數字



我們在屏幕上看到的 'A'、'B'、'C' 等字母,實際上對於電腦而言並不是圖像或文字。電腦只是一台只能理解 0 和 1(二進制) 的計算機。

那麼,我們輸入的鍵盤文字是如何儲存在電腦中的呢?人類和電腦之間需要有「約定」

「我們約定數字 65 代表字母 'A'。」

「數字 97 代表小寫字母 'a'。」

這些約定的系統性整理就是ASCII(美國信息交換標準代碼)。顧名思義,它是美國信息交換的標準碼

2. ASCII碼的結構:7位的魔法

ASCII碼於1960年代被制定。當時電腦資源非常匱乏,因此必須盡可能有效地表現字符。因此選擇了7位(bit)

  • 總共 128 個字符:7位可以表現的可能性為 $2^7$,即從 0 到 127 總共 128 個。

  • 組成部分:

    • 控制字符 (0~31):不會顯示在螢幕上,但用於通訊控制或換行 (Line Feed)、製表 (Tab) 等。

    • 可輸出字符 (32~127):包含特殊符號、數字 (0-9)、拉丁大寫字母 (A-Z)、小寫字母 (a-z)。

3. 為什麼至今仍在使用ASCII?



儘管現代技術已經大幅發展,ASCII碼仍是數位世界的根基。這是為什麼呢?

1) 兼容性的霸主

即便是當今最現代和廣泛使用的字符編碼方式UTF-8也與ASCII碼完美兼容。在UTF-8文檔中,英文字母 'A' 擁有與ASCII碼完全相同的數據。這使得很舊的遺留系統和最新系統之間在交換英文字數據時不會出現任何問題。

2) 編程的基礎

在編程中處理字符時,ASCII值的規則非常有用。

  • 'A' 是 65, 'a' 是 97。

  • 這兩個值的差距正好是 32。

    開發者可以利用這些數字規則來轉換大小寫或高效地排列數據。

3) 最輕盈的數據

所有字符都可以在 1 字節內處理,因此用英語(拉丁字母)撰寫的文檔體積非常小且處理速度快。這也是為什麼全球大多數互聯網通訊協議(如HTTP)都是基於ASCII的原因。

4. ASCII的遺產:ASCII藝術

ASCII碼不僅是簡單的通訊協議,還創造了一種文化。在不支持圖形的終端環境時期,人們用鍵盤字母繪製圖片。在1990年代末到2000年代初的日本劇「電車男」中出現了用ASCII畫出巨大的藝術作品的人物。

   |\---/|
   | o_o |
    \_^_/

像這樣,只用限制在128個字符內進行機智的表達的文化至今在開發者的源碼註解或電子郵件簽名中仍偶爾出現。

電視劇電車男的ASCII藝術範例

5. ASCII的決定性限制:世界並不只使用英語

然而,ASCII有一個致命的缺陷。這個名字本身就帶有「美國標準」的意味。

僅有的7位的空間完全無法容納漢字、韓文、日文(CJK)等亞洲文字,更遑論阿拉伯文、印地文、基里爾文等不使用拉丁字母的文化文字。

因此,過去各語言地區必須各自制定獨立的編碼方式(EUC-KR、Shift_JIS、Big5等)。如果互不相同的編碼方式的國家之間交換資料,字元就會全部亂碼,顯示為□□等無法識別的符號,和「文字亂碼(Mojibake)」現象頻繁出現。

最終,為了統一全球所有文字,則需要一個新的標準而誕生的就是Unicode。有趣的是,這個龐大的Unicode的首位(0~127號)仍然由ASCII碼佔據,這是對數位歷史起源的尊重。


總結

  1. 定義:電腦為理解字符而制定的,數字(0~127)與字符一對一對應的初始標準約定。

  2. 特徵:僅包含拉丁字母、數字和基本特殊字符。

  3. 限制:無法表示CJK(漢字、韓文、日文)、阿拉伯文等非拉丁系文字。

ASCII碼並不僅僅是一串數字,而是初期電腦工程師努力將人類語言轉譯成機器語言的結果,承載著數位時代最基本的字母


下一篇文章預告

跳出ASCII碼的狹小空間,我們將瞭解涵蓋全球所有語言及表情符號(😊)的龐大約定:Unicode的原理。如果您想知道「為什麼我的文字會亂碼?」的答案,請期待下一篇文章!