> email | 可讀 | mime <

// 使用 Quoted-Printable 將包含中文與特殊字元的郵件內容進行 MIME 編碼,同時保留純文字可讀性

[可讀性]

維持文字可讀

ASCII 範圍的內容保持為一般純文字,直接檢視郵件原始碼時仍能看懂多數正文內容。

[EMAIL]

MIME 郵件標準

遵循 MIME Content-Transfer-Encoding 規範,適用於支援多語系的郵件伺服器與用戶端。

[UNICODE]

支援 Unicode

支援 UTF-8 等編碼,安全地傳輸中文、表情符號與其他多國語系文字。

>> 技術說明

Quoted-Printable 的運作方式:

Quoted-Printable 使用可列印的 ASCII 字元來表示 8 位元資料。非 ASCII 位元組會被編碼為「=XX」(兩位十六進位數),單行通常限制在 76 個字元內,並可透過行尾的「=」實現軟換行。

範例:

"Café" → Caf=C3=A9

為什麼使用 Quoted-Printable:

  • >需要在郵件原始碼中保留可讀性與除錯友善性
  • >郵件內容以英文/ASCII 為主,僅混入少量中文或特殊字元
  • >目標系統仍有行長限制或 7 位元傳輸限制
  • >需要在日誌或歸檔中直接搜尋與閱讀郵件正文
  • >必須嚴格遵循 MIME 郵件與舊式 SMTP 流程

>> 常見問題

什麼是 Quoted-Printable 編碼?

Quoted-Printable 是 MIME 所定義的一種內容傳輸編碼方式,用於在僅支援 7 位元傳輸的郵件系統中安全傳輸 8 位元資料,同時儘量保留文字的可讀性。

什麼時候適合使用 Quoted-Printable?

適合正文主要為純文字(例如英文或程式碼),但包含少量中文或特殊字元,需要同時兼顧可讀性與協定相容性時。

它與 Base64 有何差異?

Base64 會將所有內容編碼成不可直接閱讀的字串,而 Quoted-Printable 僅對非 ASCII 字元轉義,更利於在除錯或檢視原始郵件時快速了解內容。

Quoted-Printable 中的「=」代表什麼意思?

「=」 是轉義前綴,後續兩個十六進位數字代表一個位元組;若出現在行尾,則表示邏輯行延續至下一行(軟換行)。

// 速查表

InputOutputNote
==3D= is the escape char
é (UTF-8 C3 A9)=C3=A9each byte of a multi-byte char
space/tab at end of line=20 / =09trailing whitespace
= at end of line(soft line break)joins lines, max 76 chars/line
A–Z a–z 0–9 ! * + - / etc.as isprintable ASCII 33–126 (except =)

// 程式碼範例

Input     Café = 3 € (UTF-8)
Output    Caf=C3=A9 =3D 3 =E2=82=AC
Rules     RFC 2045 section 6.7
          * bytes 33..126 except '=' may stay literal
          * everything else -> '=' + two uppercase hex digits
          * encoded lines must not exceed 76 characters
          * a line ending in '=' is a soft break (no newline in the decoded data)
MIME      Content-Transfer-Encoding: quoted-printable

>> 更多問題

問:Quoted-Printable 用在哪裡?

答:用於以 ASCII 為主、夾雜少量特殊字元的電子郵件內容(MIME)。文字保持可讀,只有其餘位元組編碼為 =XX。標頭為 Content-Transfer-Encoding: quoted-printable。

問:什麼是軟換行?

答:行尾的「=」。它允許把長行折成最多 76 個字元,而解碼時不會產生換行,各行只是被重新接起。

問:該用 Quoted-Printable 還是 Base64?

答:以拉丁文為主的文字適合 QP:開銷小且可讀。二進位資料或非 ASCII 文字更適合 Base64,固定開銷約 33%;QP 最壞情況下每位元組需 3 個字元。

其他語言