Base64 編碼完全指南
什麼是 Base64?
Base64 是一種將二進位數據轉換為 ASCII 字串的編碼方式。它使用 64 個可列印字元(A-Z、a-z、0-9、+、/)來表示二進位數據,並使用 = 作為填充字元。
為什麼需要 Base64?
許多傳輸協定(如 HTTP、SMTP)最初設計為處理文字數據。當需要在這些協定中傳輸二進位數據(如圖片、檔案)時,Base64 提供了一種安全的編碼方式。
常見使用場景
- 電子郵件附件:MIME 標準使用 Base64 編碼附件
- Data URI:在 HTML/CSS 中嵌入小型圖片
- API 傳輸:在 JSON 中傳輸二進位數據
- HTTP Basic Auth:使用者名稱和密碼的編碼
- JWT Token:Header 和 Payload 的編碼
編碼原理
Base64 將每 3 個位元組(24 位元)分成 4 組,每組 6 位元,對應到 64 個字元中的一個:
原始數據: M a n
二進位: 01001101 01100001 01101110
分組(6位): 010011 010110 000101 101110
Base64: T W F u
原始數據: M a n
二進位: 01001101 01100001 01101110
分組(6位): 010011 010110 000101 101110
Base64: T W F u
編碼範例
javascript
// JavaScript
const encoded = btoa("Hello World"); // "SGVsbG8gV29ybGQ="
const decoded = atob("SGVsbG8gV29ybGQ="); // "Hello World"
// Node.js
const buf = Buffer.from("Hello World");
const encoded = buf.toString("base64"); // "SGVsbG8gV29ybGQ="
// JavaScript
const encoded = btoa("Hello World"); // "SGVsbG8gV29ybGQ="
const decoded = atob("SGVsbG8gV29ybGQ="); // "Hello World"
// Node.js
const buf = Buffer.from("Hello World");
const encoded = buf.toString("base64"); // "SGVsbG8gV29ybGQ="
Base64 vs Base64URL
標準 Base64 使用 + 和 /,這在 URL 中會造成問題。Base64URL 將它們替換為 - 和 _:_
| 特性 | Base64 | Base64URL |
|---|---|---|
| 字元 62 | + | - |
| 字元 63 | / | _ |
| 填充 | 使用 = | 可省略 |
| 用途 | 一般編碼 | URL、JWT |
效能考量
Base64 編碼會使數據大小增加約 33%(3 位元組變 4 位元組)。因此:
- 不適合大型檔案的傳輸
- 適合小型數據(如圖示、設定值)
- Data URI 中的圖片建議不超過 5KB
常見問題
Base64 是加密嗎?
不是。Base64 只是編碼,任何人都可以解碼。不要用它來保護敏感資訊。
為什麼 Base64 字串結尾有 =?
= 是填充字元。當原始數據長度不是 3 的倍數時,需要填充:
- 餘 1 位元組:加
== - 餘 2 位元組:加
=
實用工具推薦
使用我們的 Base64 編碼工具 [blocked] 可以快速進行 Base64 編碼和解碼,支援文字和檔案處理。也可以使用 Base64 圖片轉換器 [blocked] 將圖片轉換為 Base64 Data URI。



