Base64 編碼
免費線上 Base64 編碼解碼工具,支援 UTF-8/ASCII/ISO-8859-1,Standard/URL-Safe/MIME 三種變體。即時體積統計,符合 RFC 2045。
相關推薦
什麼是 Base64 編碼?
Base64 是一種基於 64 個可列印 ASCII 字元的二進位到文字編碼方案,由 RFC 2045(MIME 標準)首次定義。Base64 將每 3 個位元組(24 位)轉換為 4 個 Base64 字元(A-Z、a-z、0-9、+、/),使二進位資料能夠安全地通過僅支援文字的系統傳輸,如 HTTP header、JSON 載荷、XML 文件或 URL 查詢參數。
**Base64 不是加密**,它只提供資料格式轉換,任何人都可以輕鬆解碼。如果需要保護敏感資料,請使用 AES 等真正的加密方案。Base64 的典型用途包括:HTTP Basic Authentication(`Authorization: Basic dXNlcjpwYXNz`)、JWT Token 的 header 和 payload 段(Base64URL 格式)、Data URI(`data:image/png;base64,...`)、郵件附件 MIME 編碼等。
**URL-Safe Base64**(RFC 4648 §5)將標準 Base64 的 +/ 替換為 -_,並通常省略 padding 的 =。這使得編碼結果可以安全地出現在 URL、檔案路徑或 JSON 欄位中。JWT Token、OAuth PKCE 的 code_verifier、AWS Signature V4 都使用 URL-Safe Base64 編碼。
**MIME 折行**是 RFC 2045 規定的每行不超過 76 個字元的標準。當 Base64 內容用於電子郵件或某些需要分行展示的場景時,MIME 變體會自動在每 76 字元處插入換行符(`\n`)。這是電子郵件附件傳輸的標準格式。
工具使用瀏覽器原生的 **btoa/atob API**,配合 UTF-8 安全的處理邏輯,確保中文字元、日文 emoji 等多位元組字元正確編碼。所有計算在本機完成,資料不發送到任何伺服器。打開瀏覽器開發者工具的網路面板,可以驗證全程無任何外網請求。
適用場景
- JWT 除錯:解碼 JWT 的 header 和 payload 段(Base64URL 格式),查看 Token 聲明內容
- Basic Auth:編碼 username:password 為 HTTP Basic 認證憑證
- OAuth 開發:產生 PKCE 場景下的 code_verifier 或驗證 code_challenge
- API 除錯:編碼 JSON 資料或解碼 API 傳回的 Base64 欄位內容
- Data URI 內嵌圖片:將小圖示轉為 data:image/...;base64,... 格式嵌入 CSS/HTML
- 郵件附件編碼:使用 MIME Base64 格式編碼郵件二進位附件
使用方法
- 選擇模式:點擊 Encode(編碼)或 Decode(解碼)切換處理方向
- 選擇變體:Standard(標準)、URL-Safe(JWT/OAuth)、MIME(郵件格式 76 字元換行)
- 輸入內容:貼上文字或 Base64 字串,自動即時處理
- 查看統計:底部顯示字元數和體積膨脹率(編碼體積增大约 33%)
- 複製結果:一鍵複製 Base64 字串或解碼文字
功能特點
- Encode/Decode 一鍵切換:編碼和解碼模式自由切換,輸出直接變為輸入支援循環處理
- 三種字元集支援:UTF-8(中文/日文/emoji)、ASCII、ISO-8859-1,專業級多場景覆蓋
- 三變體輸出:Standard(標準)、URL-Safe(JWT/OAuth/PKCE 安全)、MIME(RFC 2045 標準 76 字元換行)
- 即時體積統計:即時顯示輸入/輸出字元數和膨脹率(Base64 體積增大约 33%)
- 友善錯誤提示:字元超出範圍時顯示具體錯誤資訊,而非簡單報錯
- 可拖曳分隔線:PC 端可調整左右編輯區比例,專注當前任務
- 行動裝置獨立 Tab:手機/平板使用者獨立切換輸入區和輸出區,體驗流暢
程式碼範例
JavaScript 中的 Base64 編碼(支援中文 UTF-8)
// 編碼(支援 UTF-8 中文)
function b64Encode(str) {
return btoa(unescape(encodeURIComponent(str)));
}
// 解碼(支援 UTF-8 中文)
function b64Decode(str) {
return decodeURIComponent(escape(atob(str)));
}
// URL-Safe 編碼(用於 JWT / OAuth)
function b64UrlEncode(str) {
return btoa(unescape(encodeURIComponent(str)))
.replace(/\+/g, '-')
.replace(/\//g, '_')
.replace(/=+$/, '');
}
console.log(b64Encode('Hello 世界')); // SGVsbG8g5LiW55WM
console.log(b64Decode('SGVsbG8g5LiW55WM')); // Hello 世界Python 中的 Base64 編碼
import base64
# Standard 編碼(UTF-8)
encoded = base64.b64encode('Hello 世界'.encode('utf-8'))
print(encoded.decode()) # SGVsbG8g5LiW55WM
# Standard 解碼
decoded = base64.b64decode(encoded).decode('utf-8')
print(decoded) # Hello 世界
# URL-Safe 編碼(用於 JWT / OAuth)
url_safe = base64.urlsafe_b64encode('Hello 世界'.encode('utf-8'))
print(url_safe.decode()) # SGVsbG8g5LiW55WM(無 padding 需手動去除)
# 去除 padding(JWT 標準做法)
url_safe_no_pad = url_safe.decode().rstrip('=')
print(url_safe_no_pad)Java 中的 Base64 編碼
import java.nio.charset.StandardCharsets;
import java.util.Base64;
public class Base64Example {
public static void main(String[] args) {
String text = "Hello 世界";
// Standard 編碼
String encoded = Base64.getEncoder()
.encodeToString(text.getBytes(StandardCharsets.UTF_8));
System.out.println(encoded); // SGVsbG8g5LiW55WM
// Standard 解碼
String decoded = new String(
Base64.getDecoder().decode(encoded), StandardCharsets.UTF_8);
System.out.println(decoded); // Hello 世界
// URL-Safe 編碼(用於 JWT / URL)
String urlSafe = Base64.getUrlEncoder().withoutPadding()
.encodeToString(text.getBytes(StandardCharsets.UTF_8));
System.out.println(urlSafe);
// MIME 編碼(76字元換行)
String mime = Base64.getMimeEncoder()
.encodeToString(text.getBytes(StandardCharsets.UTF_8));
}
}常見問題
Base64 編碼和加密是一回事嗎?
不是。Base64 只是將文字轉換為另一種可逆的表示形式,任何人都可以解碼回原文。如果涉及敏感資料(密碼、Token),請使用 AES 等真正的加密方案。Base64 只適合資料格式轉換,便於文字系統傳輸二進位資料。
AES 加密工具Base64 編碼後體積會增大多少?
Base64 編碼會使原始資料體積增大约 33%。這是因為每 3 個位元組(24 位)被編碼為 4 個 Base64 字元。例如 100 位元組的文字編碼後約為 133 位元組。工具底部會即時顯示膨脹率,方便您評估資料大小。範例:`Hello` → `SGVsbG8=`(體積 +33%)。
Base64 統計工具Standard、URL-Safe、MIME 三種變體有什麼區別?
Standard 是標準 Base64,使用 A-Z、a-z、0-9、+、/ 字元。URL-Safe 將 +/ 替換為 -_,適合 URL 參數和 JWT Token。MIME 在每 76 字元處插入換行,符合 RFC 2045 郵件傳輸標準,適合郵件附件和多行文字。
URL-Safe Base64MIME Base64如何解碼 JWT 的 header 或 payload?
JWT 使用 Base64URL 編碼(URL-Safe 變體)。選擇 URL-Safe 模式後,直接貼上 JWT 的第一段(header)或第二段(payload)即可解碼。注意 JWT 第三段是簽名,不應解碼驗證。
JWT 工具什麼是 Base64 的 Padding(填充)?
Base64 編碼結果長度必須是 4 的倍數。當輸入長度不是 3 的倍數時,會用 = 字元填充。URL-Safe 變體不使用 padding。工具自動處理 padding,解碼時也會自動去除 = 字元。
Base64 Padding 工具JavaScript 中的 btoa 和 atob 為什麼不支援中文?
btoa 和 atob 是瀏覽器原生 API,它們操作的是 Latin-1(ISO-8859-1)字元集,每個字元佔 1 位元組。中文字元在 UTF-8 中佔 3 位元組,直接傳入會報錯。解決方法是先用 encodeURIComponent 將中文轉為 UTF-8 位元組序列的 %xx 格式,再用 unescape 轉為 Latin-1 字串,最後用 btoa 編碼。
什麼是 Data URI Scheme?怎麼用 Base64 內嵌圖片?
Data URI 是一種將資料直接內嵌在 URL 中的 URI 格式,語法為:`data:[<mediatype>][;base64],<data>`。例如 `data:image/png;base64,iVBORw0KGgo...`。常用於內嵌小圖示、CSS 背景圖等,減少 HTTP 請求數。但 Base64 會使體積增大 33%,因此只適合小檔案,大檔案仍應使用普通 URL。
Data URI 工具Base64 轉圖片術語表
- RFC 4648
- IETF 發布的 Base16/Base32/Base64 編碼官方標準,定義了標準 Base64 和 URL-Safe Base64 兩種字母表,以及 padding、換行、非字母表字元處理等規則。是目前 Base64 編碼的事實標準,替代了早期的 RFC 3548。URL-Safe Base64 工具Base64 Padding 工具
- RFC 2045 (MIME)
- 多用途網際網路郵件擴展(MIME)標準,首次將 Base64 作為郵件內容傳輸編碼方式。規定 Base64 編碼每行不超過 76 個字元並以 CRLF 換行,即 MIME Base64 變體。MIME Base64 工具
- Base64URL(URL-Safe Base64)
- RFC 4648 §5 定義的 URL 安全變體。將標準 Base64 的 + 替換為 -、/ 替換為 _,並通常省略 padding 的 = 字元。廣泛用於 JWT Token、OAuth PKCE、URL 參數、檔名等場景。URL-Safe Base64 工具JWT 工具
- MIME Base64
- 符合 RFC 2045 標準的 Base64 變體,每 76 個字元插入一個換行符(CRLF)。主要用於電子郵件附件傳輸,因早期 SMTP 協議對單行長度有限制。MIME Base64 工具
- Padding(填充)
- Base64 編碼結果長度必須是 4 的倍數。當輸入位元組數不是 3 的倍數時,末尾用 = 字元補齊。標準 Base64 使用 padding,Base64URL 通常省略 padding。Base64 Padding 工具
- Base64 字母表(Alphabet)
- Base64 編碼使用的 64 個字元集合。標準 Base64 字母表為:A-Z(26個)、a-z(26個)、0-9(10個)、+、/,共 64 個字元,外加填充字元 =。
- btoa / atob
- 瀏覽器原生的 Base64 編碼/解碼 API。btoa(binary to ASCII)用於編碼,atob(ASCII to binary)用於解碼。注意這兩個 API 只支援 Latin-1 字元集,處理中文需配合 UTF-8轉碼。
- Data URI Scheme
- 一種 URI 格式,允許將小檔案直接內嵌在 URL 中,格式為 data:[<mediatype>][;base64],<data>。常用於內嵌小圖示、CSS 背景圖等,減少 HTTP 請求。Data URI 工具Base64 轉圖片
- HTTP Basic Authentication
- HTTP 協議中的一種認證方式,將使用者名稱和密碼用冒號連接後進行 Base64 編碼,放在 Authorization 請求頭中傳輸。格式為:Authorization: Basic <base64(username:password)>。Auth Header 構建器
- Base64 膨脹率
- Base64 編碼後資料體積增加的比例。每 3 位元組(24 位)編碼為 4 個 Base64 字元,因此體積增大约 33%(4/3 ≈ 1.333)。加上 padding 時膨脹率會略高。
Base64 三種變體對比
| 特性 | Standard | URL-Safe | MIME |
|---|---|---|---|
| 特殊字元 | + / | - _ | + / |
| Padding(=) | 使用 | 通常省略 | 使用 |
| 換行 | 無 | 無 | 每76字元換行 |
| 標準 | RFC 4648 §4 | RFC 4648 §5 | RFC 2045 |
| 典型場景 | Data URI、通用編碼 | JWT、URL參數、檔名 | 郵件附件、SMTP傳輸 |
Base 系列編碼對比表
| 編碼 | 字元數 | 字元集特點 | 體積膨脹 | 典型用途 |
|---|---|---|---|---|
Base16 (Hex) | 16 | 0-9, A-F | 100% | 除錯、雜湊展示 |
Base32 | 32 | A-Z, 2-7(大寫不混淆) | 60% | DNS、TOTP密鑰、QR碼 |
Base58 | 58 | 去掉易混淆字元0/O/I/l | 38% | 比特幣地址、加密貨幣 |
Base62 | 62 | A-Z, a-z, 0-9 | 34% | URL短鏈、ID編碼 |
Base64 | 64 | A-Z, a-z, 0-9, +, / | 33% | Data URI、MIME、JWT(URL-Safe變體) |
Authoritative References
- ReferenceRFC 4648 - The Base16, Base32, and Base64 Data Encodings
- ReferenceRFC 2045 - MIME Part One: Format of Internet Message Bodies
- ReferenceRFC 7519 - JSON Web Token (JWT)
- ReferenceMDN Web Docs - btoa()
- ReferenceMDN Web Docs - atob()
- ReferenceWikipedia - Base64
- 安全字串比較
- 二進位轉換
- 凱薩密碼
- 摩斯密碼
- 十六進位轉換
- 影片轉 Base64
- Base64 轉影片
- 圖片轉 Base64
- Base64 轉圖片
- 文字轉 Base64
- Base64 轉文字
- 檔案雜湊校驗
- 檔案轉 Base64
- Base64 轉檔案
- 音訊轉Base64
- Base64轉音訊
- AES 加密解密
- DES 加密解密
- Base32 編碼解碼
- Base58 編碼解碼
- Base64 編碼
- Base64 解碼
- Base64 比較
- Base64 拆分
- Base64 多行合併
- Base64 格式化
- Base64 格式檢查
- Base64 批次編碼
- Base64 批次解碼
- Base64 清理
- Base64 填充處理
- Base64 長度統計
- Base64 轉十六進位
- Base64 DataURL 轉換
- Base64-Hex 互轉
- Base85 編解碼器
- HMAC 生成與驗證
- PBKDF2 金鑰派生
- MD5 雜湊
- SHA-256 雜湊
- SHA1 雜湊
- SHA512 雜湊
- JWT 工具
- HTML 實體編碼解碼
- Unicode 跳脫
- URL 編碼
- URL Safe Base64
- MIME Base64
- Java 混淆
- JS 混淆
- PHP 混淆
- Python 混淆