Base64 解碼
免費線上 Base64 解碼工具,將 Base64 字串還原為原始文字,支援多字元集,適合介面排查和日誌還原。
相關推薦
什麼是 Base64 解碼?
Base64 解碼是 Base64 編碼的反向過程,將 Base64 字串(A-Z、a-z、0-9、+、/、= 等 64 個可字元集合)還原為原始的二進位資料或文字。Base64 編碼由 RFC 4648 標準化,每 4 個 Base64 字元對應 3 個原始位元組(位元組即 byte),因此解碼後的位元組數量必然是 Base64 長度的 3/4(扣除 padding 後)。
Base64 解碼最常見的場景是把編碼後的文字或二進位內容還原回可讀形式:例如 API 回傳的 Base64 編碼欄位、JWT Token 的 header 和 payload 段、HTTP Basic Authentication 中的認證字串、Data URI 中的內嵌資源、或是設定檔中序列化的二進位資料。解碼後可以快速判斷原始內容是否符合預期。
**URL-Safe Base64**(RFC 4648 §5)是標準 Base64 的變體,使用 - 和 _ 替代標準的 + 和 /,且通常省略末尾的 = padding。這種變體廣泛用於 JWT Token、OAuth PKCE、URL 參數和檔名等場景。解碼 URL-Safe 字串時需要先把 - 和 _ 替換回 + 和 /,再按標準 Base64 規則解碼。
**字元集(Charset)** 是 Base64 解碼最常踩坑的地方。Base64 編碼本身只處理位元組流,與字元集無關,但當原始資料是文字時,必須用正確的字元集把位元組解碼成字串。中文、日文等多位元組文字通常使用 UTF-8 編碼;純英文可使用 ASCII;西歐語言常使用 ISO-8859-1。字元集選擇錯誤會導致解碼後出現亂碼。
工具使用瀏覽器原生的 atob API 配合 UTF-8 安全處理邏輯,所有計算在本地完成,資料不上傳到任何伺服器。打開瀏覽器開發者工具的網路面板,可以驗證全程無任何外網請求。同時支援 Standard 和 URL-Safe 兩種變體自動識別,並提供 UTF-8、ASCII、ISO-8859-1 三種字元集切換。
適用場景
- 解碼介面回傳的 Base64 欄位檢視原始內容
- 還原日誌中的 Base64 編碼資料
- 恢復設定檔中的 Base64 編碼值
- 排查 Base64 解碼報錯原因(填充缺失、非法字元等)
- 解碼 JWT Token 的 header 和 payload 段,檢視 Token 聲明
- 解碼 HTTP Basic Authentication 認證字串,檢視帳號密碼
- 還原 Data URI 中的內嵌資源(小圖示、CSS 背景等)
使用方法
- 貼上需要解碼的 Base64 字串
- 選擇字元集(UTF-8/ASCII/ISO-8859-1)
- 工具自動進行 Base64 解碼並顯示結果
- 複製解碼結果用於後續除錯或文件記錄
功能特點
- 即時雙向轉換:輸入即解碼,300ms 防抖延遲,無需手動觸發
- 多字元集支援:UTF-8、ASCII、ISO-8859-1 三種字元集,覆蓋中文/英文/多語言場景
- URL-safe Base64 相容:自動處理 - 和 _ 字元替換,支援無 Padding 格式
- 非法字元檢測:解碼失敗時提示具體錯誤位置,快速定位格式問題
- 一鍵複製與下載:支援複製解碼結果到剪貼簿,或下載為 .txt 文字檔
- JWT Token 友善:可貼上 JWT 的 header 或 payload 段快速還原原始聲明
- 本地端運算:所有解碼在瀏覽器本地完成,資料不上傳伺服器,保護隱私
程式碼範例
JavaScript 中的 Base64 解碼(支援中文 UTF-8)
// 標準解碼(支援 UTF-8 中文)
function b64Decode(str) {
return decodeURIComponent(escape(atob(str)));
}
// URL-Safe 解碼(用於 JWT / OAuth)
function b64UrlDecode(str) {
// 先把 - 和 _ 還原為 + 和 /
str = str.replace(/-/g, '+').replace(/_/g, '/');
// 補齊 padding
while (str.length % 4) str += '=';
return decodeURIComponent(escape(atob(str)));
}
console.log(b64Decode('SGVsbG8g5LiW55WM')); // Hello 世界
console.log(b64UrlDecode('SGVsbG8g5LiW55WM')); // Hello 世界Python 中的 Base64 解碼
import base64
# Standard 解碼(UTF-8)
encoded = base64.b64encode('Hello 世界'.encode('utf-8'))
decoded = base64.b64decode(encoded).decode('utf-8')
print(decoded) # Hello 世界
# URL-Safe 解碼(用於 JWT / OAuth)
url_safe = base64.urlsafe_b64encode('Hello 世界'.encode('utf-8'))
decoded_url_safe = base64.urlsafe_b64decode(url_safe).decode('utf-8')
print(decoded_url_safe) # Hello 世界
# 容錯解碼(自動處理缺失 padding)
def safe_b64_decode(s):
s = s.replace('-', '+').replace('_', '/')
s += '=' * ((4 - len(s) % 4) % 4)
return base64.b64decode(s).decode('utf-8', errors='replace')
print(safe_b64_decode('SGVsbG8g5LiW55WM')) # Hello 世界Java 中的 Base64 解碼
import java.nio.charset.StandardCharsets;
import java.util.Base64;
public class Base64DecodeExample {
public static void main(String[] args) {
String encoded = "SGVsbG8g5LiW55WM";
// Standard 解碼
String decoded = new String(
Base64.getDecoder().decode(encoded), StandardCharsets.UTF_8);
System.out.println(decoded); // Hello 世界
// URL-Safe 解碼(用於 JWT)
String urlSafeDecoded = new String(
Base64.getUrlDecoder().decode(encoded), StandardCharsets.UTF_8);
System.out.println(urlSafeDecoded);
// MIME 解碼(自動處理換行)
String mimeEncoded = "SGVsbG8g\n5LiW55WM=";
String mimeDecoded = new String(
Base64.getMimeDecoder().decode(mimeEncoded), StandardCharsets.UTF_8);
System.out.println(mimeDecoded);
}
}常見問題
為什麼 Base64 解碼時會報 InvalidCharacterError?
常見原因包括:混入了空格/換行/引號等非法字元、Padding(=)數量不正確、或使用了 URL-safe 變體(-/_ 替代 +//)。建議先用 Base64 清理工具預處理再解碼。
解碼後看到亂碼怎麼辦?
可能是字元集選擇錯誤。如果原文是中文,請選擇 UTF-8 字元集;如果是純英文或二進位資料,可嘗試 ASCII 或 ISO-8859-1。
URL-safe Base64 和普通 Base64 解碼有什麼區別?
URL-safe Base64 使用 - 和 _ 替代 + 和 /,且通常省略末尾的 = Padding。解碼前需要將 -/_ 還原為 +//,並補齊正確的 Padding。
Base64 解碼適合介面聯調嗎?
非常適合。很多 API 回應、OAuth Token、回呼參數和中介軟體日誌都會把內容做 Base64 封裝,解碼後可直接檢視原始資料。
如何解碼 JWT 的 header 和 payload?
JWT 使用 Base64URL 編碼(URL-Safe 變體)。從 JWT 中以 . 分隔取出第一段(header)或第二段(payload),貼到工具中即可解碼。注意第三段是簽名,不應解碼驗證內容。
解碼後的結果能繼續複製到其它工具裡嗎?
可以。解碼結果常用於繼續做 JSON 檢視、文字檢查、檔案恢復或再次編碼。工具支援一鍵複製到剪貼簿,也可下載為 .txt 文字檔保存。
Padding 缺失會導致解碼失敗嗎?
會。標準 Base64 要求長度為 4 的倍數,缺失 padding 會讓瀏覽器 atob API 拋出錯誤。處理方式是用 = 補齊至長度為 4 的倍數後再解碼。URL-Safe 變體通常省略 padding,解碼時需要先補齊。
為什麼中文字串解碼後顯示問號或亂碼?
btoa/atob 是瀏覽器原生 Latin-1 API,直接處理中文會出錯。本工具使用 encodeURIComponent 將中文轉為 UTF-8 位元組序列再處理,所以能正確還原。如果仍出現亂碼,請確認字元集選擇為 UTF-8。
解碼 Base64 後的資料是明文嗎?
是。Base64 不是加密,只是一種編碼格式,任何人拿到 Base64 字串都能輕鬆解碼還原原文。因此 Base64 不適合用於保護敏感資料(密碼、Token),這些場景請使用 AES 等真正的加密方案。
故障排查
術語表
- RFC 4648
- IETF 發布的 Base16/Base32/Base64 編碼官方標準,定義了標準 Base64 和 URL-Safe Base64 兩種字母表,以及 padding、換行、非字母表字元處理等規則。是目前 Base64 編解碼的事實標準,替代了早期的 RFC 3548。URL-Safe Base64 工具Base64 Padding 工具
- InvalidCharacterError
- 瀏覽器原生 atob API 在遇到非合法 Base64 字元時拋出的 DOMException。常見觸發原因包括混入空格、換行、引號、Tab,或是使用 URL-Safe 變體(-/_)但未轉換回標準字元(+/)。Base64 清理工具
- Base64URL(URL-Safe Base64)
- RFC 4648 §5 定義的 URL 安全變體。將標準 Base64 的 + 替換為 -、/ 替換為 _,並通常省略 padding 的 = 字元。廣泛用於 JWT Token、OAuth PKCE、URL 參數、檔名等場景。解碼時需要先還原成標準字元。URL-Safe Base64 工具JWT 工具
- Padding(填充)
- Base64 編碼結果長度必須是 4 的倍數。當輸入位元組數不是 3 的倍數時,末尾用 = 字元補齊。標準 Base64 使用 padding,Base64URL 通常省略 padding。解碼時若 padding 缺失或錯誤,會導致解碼失敗或結果長度異常。Base64 Padding 工具
- btoa / atob
- 瀏覽器原生的 Base64 編解碼 API。btoa(binary to ASCII)用於編碼,atob(ASCII to binary)用於解碼。注意這兩個 API 只支援 Latin-1(ISO-8859-1)字元集,處理中文需配合 encodeURIComponent 和 decodeURIComponent 進行 UTF-8 轉碼。Base64 編碼工具
- 字元集(Charset)
- 把位元組對應到字元的編碼規則。Base64 編解碼本身只處理位元組,但當結果是文字時需要用正確的字元集還原。常見字元集:UTF-8(中文、日文、emoji)、ASCII(純英文)、ISO-8859-1(西歐語言)。字元集錯誤會導致解碼後出現亂碼。Base64 轉文字工具
- HTTP Basic Authentication
- HTTP 協議中的一種認證方式,將使用者名稱和密碼用冒號連接後進行 Base64 編碼,放在 Authorization 請求頭中傳輸。解碼後可檢視帳號密碼明文,格式為:Authorization: Basic <base64(username:password)>。Auth Header 建構器
- JWT 解碼(Base64URL)
- JWT Token 由三段以 . 分隔的 Base64URL 編碼組成:header(演算法資訊)、payload(聲明資料)、signature(簽名)。解碼 JWT 通常只需處理前兩段,第三段是 HMAC 或 RSA 簽名不應解碼驗證。JWT 工具
Base64 解碼常見錯誤與解決方式
| 錯誤現象 | 可能原因 | 解決方式 |
|---|---|---|
| InvalidCharacterError | 混入空格、換行、Tab、引號等非法字元 | 使用 Base64 清理工具移除空白,或手動去掉換行 |
| 解碼結果長度異常 | Padding(=)缺失或數量不正確 | 補齊 = 使長度為 4 的倍數,或使用 padding 自動修復工具 |
| 解碼後出現亂碼 | 字元集選擇錯誤(中文用 UTF-8、英文可用 ASCII) | 切換為 UTF-8 字元集,必要時嘗試 ISO-8859-1 |
| URL-Safe 字串解碼失敗 | 字串含 - 或 _ 但未轉換回 + 或 / | 先把 - 替換為 +、_ 替換為 /,再按標準 Base64 解碼 |
| JWT Token 解碼亂碼 | JWT 使用 Base64URL 但未去除 padding | 使用 URL-Safe 模式,並忽略末尾 = 字元 |
Base64 變體與解碼對應表
| 變體 | 字母表 | Padding | 解碼模式 | 典型場景 |
|---|---|---|---|---|
| Standard Base64 | A-Z, a-z, 0-9, +, / | 使用 = | Standard | API 回傳、Data URI、一般用途 |
| URL-Safe Base64 (Base64URL) | A-Z, a-z, 0-9, -, _ | 通常省略 | URL-Safe(自動轉換 -_ → +/) | JWT、OAuth PKCE、URL 參數、檔名 |
| MIME Base64 | A-Z, a-z, 0-9, +, / | 使用 = | Standard + 自動移除 CRLF | 電子郵件附件、SMTP 傳輸 |
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()
- ReferenceMDN Web Docs - DOMException
- 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 混淆