理解 Email 裡那些神祕等號:Quoted-Printable 的歷史殘影

本篇文章更新時間:2026/02/04
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知。
一介資男的 LINE 社群開站囉!歡迎入群聊聊~
如果本站內容對你有幫助,歡迎使用 BFX Pay 加密貨幣新台幣 贊助支持。


為什麼老郵件裡都是等號?深入理解 Quoted-Printable 的奇妙遺產

編輯前言:最近在社群網站上常看到大家挖出 80、90 年代的電子郵件截圖,而其中最令人困惑的就是滿滿的「=」。這篇原文作者以技術背景帶大家拆解這些符號背後的歷史與編碼細節,值得一看。

原文來源: What’s up with all those equals signs anyway?

核心觀點 (Key Takeaways)

  • 郵件中的「=」大多來自 Quoted‑Printable 編碼,尤其用在長行換行處。
  • 不正確的解碼流程會造成殘留的等號、被吃掉的字元,以及奇怪的「=C2」「=A0」等符號。
  • 問題源頭並非郵件本身,而是後來「轉換這些老郵件格式的人」做錯了處理。

深入解析

老郵件裡大量出現的等號,其實不是什麼祕密代碼,也不是掃描後 OCR 的產物,而是當年的郵件系統處理方式所留下的痕跡。

原文作者提到,80、90 年代的 Email 並不如今日那麼標準化。當使用者在郵件編輯器中輸入一行很長的句子時,郵件系統會在傳遞前自動「斷行」。Quoted‑Printable 編碼的規則便是:

用一個「=」接著 CRLF 告訴解析器:這行其實還沒結束,請將下一行與前一行接起來。

例如:

non- =CRLF
cloven

顯示時會合成:

non- cloven

但問題就出現在後續的轉檔者。他們先把 CRLF 換成 Unix 系統常用的 NL,結果導致編碼格式少了一個字元:

non- =NL
cloven

若此時解碼程式「錯誤地」假設仍是 CRLF,就會:

  • 找到行尾的等號
  • 刪除兩個不存在的字元
  • 反而破壞原文內容(甚至吃掉下一行首字)

更複雜的是,等號在 Quoted‑Printable 中還有第二個用途:表示「非 ASCII 字元」的 16 進位編碼。例如:

  • =C2=A0 代表不換行空白(non-breakable space)
  • =C2 本身是 UTF‑8 字元序列的起始

原文作者懷疑這些老郵件被處理時,很可能只是「粗暴地替換 =C2 與 =A0」,而不是使用正規的 QP 解碼器,才會造成如今看到的亂象。

筆者心得與啟發

讀完這篇文章,我最大的感觸是:技術歷史的遺骸,比我們以為的還要頑強。今天我們在社群上看到的一串莫名其妙的等號,背後其實是 30 年前郵件協定、作業系統行尾差異、UTF‑8 演化史共同作用的結果。

這篇文章提醒我兩件事:

  • 第一,格式轉換從來都不是簡單的字串替換,而是需要理解背後的標準、歷史與假設。
  • 第二,在處理老資料時,最可靠的方法一直都是:使用正規的解析器,而不是「應該可以吧」的手寫邏輯。

如果你也對老系統或文字編碼歷史感興趣,原文非常值得一讀。


Share:

作者: Chun

資訊愛好人士。主張「人人都該為了偷懶而進步」。期許自己成為斜槓到變進度條 100% 的年輕人。[///////////____36%_________]

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


文章
Filter
Apply Filters
Mastodon