> unix | 經典 | 相容舊系統 <

// UUencoding —— 用於在純文字通道中傳輸二進位資料的 Unix-to-Unix 編碼格式

[UNIX]

經典 Unix 標準

曾在 Unix 系統上廣泛用於電子郵件附件、Usenet 貼文與檔案傳輸的歷史編碼方案。

[相容性]

良好相容性

許多 Unix/Linux 工具與舊版郵件用戶端仍能直接處理 UUencode 格式。

[自我描述]

自包含格式

在 begin/end 行中包含檔名與權限資訊,方便接收端完整還原原始檔案。

>> 技術說明

UUencoding 的運作方式:

UUencoding 使用由空白(ASCII 32)開始的一組可列印字元,將二進位資料轉換為 ASCII 文字。與 Base64 相同,它會將 3 個位元組編碼為 4 個字元,但字元集合不同,並透過 begin/end 行攜帶檔案的中繼資料。

範例:

"Hello" → begin 644 data\n%2&5L;&\\`\n`\nend

為什麼要使用 UUencoding:

  • >維持與歷史 Unix/Linux 工具與腳本的相容性
  • >在純文字通道中保留檔名和權限等資訊
  • >協助分析舊電子郵件存檔、Usenet 歷史資料和備份
  • >在需要重現舊系統行為或通訊協定時非常實用
  • >讓開發者更容易了解與除錯傳統編碼格式

>> 常見問題

什麼是 UUencoding?

UUencoding(Unix-to-Unix encoding)是一種早期的二進位轉文字編碼方式,最初設計用來在只支援文字的通道(例如電子郵件與 Usenet)傳輸二進位檔案。

UUencoding 與 Base64 有何不同?

兩者皆會將 3 個位元組編碼成 4 個字元,但 UUencoding 使用由空白開始的不同字元集合,並在 begin/end 行中附帶檔案權限及檔名等中繼資訊。

現在還需要 UUencoding 嗎?

在現代場景多半使用 Base64,但當你需要維護舊系統、解析歷史資料或與舊工具相容時,UUencoding 支援仍然十分重要。

這個工具適合哪些人?

主要適合需要處理舊郵件、Usenet 歷史紀錄、備份檔或遺留通訊協定的工程師與系統維運人員。

// 速查表

名稱說明
Length charbyte count + 32 (45 bytes -> M)
Group3 bytes -> 4 chars, each 6 bits + 32 (space..underscore)
Zero valuebacktick ` instead of space
Lineup to 45 bytes -> 60 chars
Headerbegin 644 filename
Trailer` line, then end

// 計算範例

Input   Cat      (0x43 0x61 0x74)
Bits    010000 110110 000101 110100  = 16 54 5 52
+32     48 86 37 84  ->  0 V % T
Line    #0V%T        (# = 3 bytes + 32)

begin 644 cat.txt
#0V%T
`
end

>> 更多問題

問:什麼是 UUencode?

答:Unix 的歷史編碼方式(「Unix-to-Unix encode」),把二進位資料轉為可列印 ASCII 字元,以便透過郵件或 Usenet 傳輸。3 位元組變 4 字元,開銷約 33%。

問:UUencode 與 Base64 有何區別?

答:兩者都把 3 位元組變成 4 字元。UUencode 給每個 6 位元值加 32(字元範圍從空白到「_」),Base64 使用 A–Z a–z 0–9 + /。UUencode 還在每行加長度字元,並有含檔名和權限的 begin/end 行。

問:UUencode 現在還在用嗎?

答:很少。郵件領域已大致被使用 Base64 的 MIME 取代。仍可見於舊的 Usenet 存檔和 Unix 工具 uuencode/uudecode。新專案建議用 Base64。

其他語言