Base64 解碼

Base64 輸入
0 字元

免費線上 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 背景等)

使用方法

  1. 貼上需要解碼的 Base64 字串
  2. 選擇字元集(UTF-8/ASCII/ISO-8859-1)
  3. 工具自動進行 Base64 解碼並顯示結果
  4. 複製解碼結果用於後續除錯或文件記錄

功能特點

  • 即時雙向轉換:輸入即解碼,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 Base64A-Z, a-z, 0-9, +, /使用 =StandardAPI 回傳、Data URI、一般用途
URL-Safe Base64 (Base64URL)A-Z, a-z, 0-9, -, _通常省略URL-Safe(自動轉換 -_ → +/)JWT、OAuth PKCE、URL 參數、檔名
MIME Base64A-Z, a-z, 0-9, +, /使用 =Standard + 自動移除 CRLF電子郵件附件、SMTP 傳輸

Authoritative References