Base64 編解碼工具

快速進行 Base64 編碼與解碼,支援 UTF-8、安全複製與清空等便捷操作。

編碼(文字 → Base64)

解碼(Base64 → 文字)

使用說明

Base64 將二進位資料編碼為 ASCII 以便傳輸與儲存。大小會增加約 33%。
編碼:將純文字轉換為 Base64,以更安全地傳輸。
解碼:從 Base64 字串還原原始文字。

特性

  • UTF-8 安全:正確處理非 ASCII 字元(使用 encodeURIComponent/unescape 包裹)。
  • URL 安全支援:一鍵切換 + / → - _,可選移除填充 =。
  • 解碼前處理:可忽略空白、自動還原 URL 安全格式並自動補齊 =。
  • 即時互動:輸入自動處理,顯示長度與增長率統計。
  • 可用性:複製快捷、結果互填、鍵盤可達,行動端友好。
  • 風格統一:無 Tailwind 的 dark: 工具類,完全使用 DaisyUI 主題。

快速範例

原文本:
Hello, World!
Base64:
SGVsbG8sIFdvcmxkIQ==

什麼是 Base64

Base64 是一種將二進位資料編碼為 ASCII 文字的方式,常用於文本協定(如 JSON、XML、HTTP)中傳輸圖片或檔案內容。

它將每 3 個位元組映射為 4 個可列印字元,通常會造成約 33% 的體積增長。

標準 Base64 使用 A–Z a–z 0–9 + / 和填充值 =;URL 安全變體將 + / 替換為 - _,以避免 URL 中的轉義問題。

常見用途

  • 將圖片或小檔案嵌入為 Data URI。
  • 在前後端之間傳輸二進位資料(如加密密文、壓縮流)。
  • 對文字進行可列印化處理,避免編碼不一致或不可見字元的問題。

常見問題與注意事項

  • 字元集:網頁環境請先對文字做 UTF-8 處理(本工具已內建)。
  • URL 安全:URL 參數或路徑建議使用 URL 安全變體,並考慮移除填充值。
  • 填充值:某些實作允許省略 =,解碼時需自動補齊至 4 的倍數。
  • 換行:MIME Base64 可能包含換行,解碼時可勾選「忽略空白字元」。

如何透過程式語言進行 Base64 編解碼

JavaScript
文字 → Base64(UTF-8 安全)
const encoded = btoa(unescape(encodeURIComponent(text)));
// URL 安全
const urlSafe = encoded.replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/g, '');
解碼(Base64 → 文字)
// 預處理:可將 -_ 替換為 +/
let b64 = input.replace(/-/g, '+').replace(/_/g, '/');
if (b64.length % 4 !== 0) b64 = b64.padEnd(b64.length + (4 - (b64.length % 4)), '=');
const text = decodeURIComponent(escape(atob(b64)));
PHP
編碼(文字 → Base64)
$encoded = base64_encode($text);
// URL 安全
$urlSafe = rtrim(strtr($encoded, '+/', '-_'), '=');
解碼(Base64 → 文字)
$b64 = strtr($input, '-_', '+/');
// 自動補齊 '='
if (strlen($b64) % 4 !== 0) $b64 .= str_repeat('=', 4 - (strlen($b64) % 4));
$text = base64_decode($b64);
Python
編碼(文字 → Base64)
import base64

encoded = base64.b64encode(text.encode('utf-8')).decode('ascii')
# URL 安全編碼(移除填充值)
url_safe = encoded.replace('+','-').replace('/','_').rstrip('=')
解碼(Base64 → 文字)
import base64

def b64_decode(s: str) -> str:
    s = s.replace('-','+').replace('_','/')
    s += '=' * (-len(s) % 4)  # 自動補齊 '='
    return base64.b64decode(s).decode('utf-8')
Go
編碼(文字 → Base64)
import (
    "encoding/base64"
)

enc := base64.StdEncoding.EncodeToString([]byte(text))
// URL 安全編碼(無填充值)
urlEnc := base64.RawURLEncoding.EncodeToString([]byte(text))
解碼(Base64 → 文字)
import (
    "encoding/base64"
)

decBytes, err := base64.StdEncoding.DecodeString(enc)
// URL 安全解碼(無填充值)
decURL, err2 := base64.RawURLEncoding.DecodeString(urlEnc)
Rust
編碼(文字 → Base64)
use base64::{engine::general_purpose, Engine as _};

let enc = general_purpose::STANDARD.encode(text.as_bytes());
// URL 安全編碼(無填充值)
let url_enc = general_purpose::URL_SAFE_NO_PAD.encode(text.as_bytes());
解碼(Base64 → 文字)
use base64::{engine::general_purpose, Engine as _};

let dec_bytes = general_purpose::STANDARD.decode(&enc).unwrap();
let dec = String::from_utf8(dec_bytes).unwrap();

let url_dec = String::from_utf8(
    general_purpose::URL_SAFE_NO_PAD.decode(&url_enc).unwrap()
).unwrap();
Cargo 依賴:base64 = "0.22"
Java
編碼(文字 → Base64)
import java.nio.charset.StandardCharsets;
import java.util.Base64;

String enc = Base64.getEncoder().encodeToString(text.getBytes(StandardCharsets.UTF_8));
// URL 安全編碼(無填充值)
String urlEnc = Base64.getUrlEncoder().withoutPadding().encodeToString(text.getBytes(StandardCharsets.UTF_8));
解碼(Base64 → 文字)
import java.nio.charset.StandardCharsets;
import java.util.Base64;

String dec = new String(Base64.getDecoder().decode(enc), StandardCharsets.UTF_8);
String urlDec = new String(Base64.getUrlDecoder().decode(urlEnc), StandardCharsets.UTF_8);

Data URI 範例

將圖片或小檔案以 Data URI 形式內嵌:

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA...

注意:大檔案不建議使用 Data URI,會顯著增加 HTML/JSON 體積並影響效能。