Base64 解碼

貼上 Base64 字串,即可還原出原始文字或位元組。換行、URL 安全字元、缺失的填充和 data: 字首都會自動處理,出錯時會指出具體是哪個字元。

完全在瀏覽器中執行,不會上傳任何資料。

使用方法

  1. 把 Base64 字串貼上到輸入框,或點選「開啟檔案」載入包含 Base64 文字的檔案。
  2. 保持文字輸出並選擇字元集(預設 UTF-8);如果是二進位資料,把輸出切換為十六進位。
  3. 解碼失敗時檢視錯誤提示,其中會給出第一個無效字元的位置。
  4. 複製解碼結果,或將其下載儲存。

解碼器能接受哪些輸入

解碼是編碼的逆過程:每個字元還原成 6 位數值,每 4 個字元組合成 3 個位元組。實際遇到的 Base64 往往不夠規範,因此本解碼器的容錯性較強:

  • 空格和換行會被忽略,按行折斷的 MIME 郵件正文和 PEM 內容可以直接貼上。不過請先刪掉 -----BEGIN 和 -----END 這兩行:其中的字母和短橫線都是合法的 Base64 字元,會被當作資料解碼。
  • URL 安全格式中的 - 和 _ 與標準 Base64 中的 + 和 / 同樣可以解碼。
  • 缺少填充也沒有問題。只有長度為 4n + 1 的字串會被拒絕,因為單獨剩下的一個字元無法組成一個位元組,這通常說明字串被截斷了。
  • Data URI 同樣可以直接貼上,開頭的 data:...;base64, 字首會在解碼前自動去掉。

文字輸出還是二進位輸出

解碼的結果始終是一串位元組。如果原始內容是文字,保持文字輸出並選擇對應的字元集即可;如果原始內容是圖片、PDF、壓縮包、金鑰或密文,換什麼字元集都無法變成可讀文字,此時可以把輸出切換為十六進位檢視位元組,或者使用 Base64 轉檔案 和 Base64 轉圖片 預覽並儲存。從開頭幾個字元往往就能看出內容型別:

Base64 開頭解碼後的內容
iVBORw0KGgoPNG 圖片
/9j/JPEG 圖片
R0lGODGIF 圖片
JVBERi0PDF 文件
UEsDBZIP 壓縮包,包括 DOCX、XLSX 和 JAR
H4sIgzip 壓縮資料
eyJJSON 物件,例如 JWT 的頭部

解碼結果為什麼是亂碼

  • 字元集不對。UTF-8 文字按 Windows-1252 讀取時,é 會變成 é;GBK 或 Shift_JIS 文字按 UTF-8 讀取時,會出現替換字元(�)。請選擇文字原本使用的字元集,中文舊系統的資料通常是 GBK。
  • 內容是二進位資料。滿屏雜亂符號,只在開頭附近夾著 PNG、PK 之類的可讀片段,說明內容是檔案而不是文字。
  • 壓縮或加密的資料。gzip 資料流、Protocol Buffers 和密文都能正確解碼,但本身就不是文字,用十六進位輸出才能看清實際內容。
  • 被編碼了兩次。如果結果本身還是 Base64,把它貼上回輸入框再解碼一次即可。

在程式碼中解碼 Base64

# Python
base64.b64decode(s).decode('utf-8')

// Node.js(同樣接受 URL 安全格式)
Buffer.from(s, 'base64').toString('utf8')

// 瀏覽器:atob() 每個位元組返回一個字元,需要再按 UTF-8 解碼
new TextDecoder().decode(Uint8Array.from(atob(s), c => c.charCodeAt(0)))

# Linux 和 macOS 命令列
echo 'SGVsbG8=' | base64 --decode

編碼規格

字母表A-Z a-z 0-9 + /
輸出體積每 3 位元組輸出 4 個字元(約 133%)
填充用 = 補足到 4 的倍數
標準RFC 4648 第 4 節
區分大小寫是

編碼範例

輸入 (UTF-8)輸出
Hello, World!SGVsbG8sIFdvcmxkIQ==
Base64.isQmFzZTY0Lmlz
你好5L2g5aW9

常見問題

為什麼提示存在無效字元?
輸入中含有 Base64 字母表以外的字元,例如引號、反斜槓,或者從 URL 中複製來的 %2B、%3D 等百分號轉義。請去掉引號,或先對字串進行 URL 解碼。錯誤提示會給出第一個問題字元的位置。
沒有填充的 Base64 能解碼嗎?
可以。解碼器不依賴末尾的 =,來自 JWT、URL 和各類 API 的無填充字串都能正常解碼。
從 URL 中複製的 Base64 為什麼解碼結果不對?
Base64 未經轉義直接放進查詢字串時,表單解碼通常會把 + 變成空格。本工具會忽略空格,這些字元就丟失了。請先把空格替換回 + 再解碼;需要在 URL 中傳遞的值,建議改用 Base64URL。
如何把 Base64 解碼成圖片或檔案?
圖片可以使用 Base64 轉圖片 預覽和下載,PDF、壓縮包、音訊等檔案可以使用 Base64 轉檔案。兩者都會根據開頭的位元組自動識別檔案型別。
我的 Base64 資料會上傳到伺服器嗎?

不會。解碼完全由瀏覽器中的 JavaScript 完成,輸入內容不會離開你的裝置。解碼權杖、配置金鑰或個人資料時,這一點尤其重要。