Base64 編解碼工具
快速進行 Base64 編碼與解碼,支援 UTF-8、安全複製與清空等便捷操作。
編碼(文字 → Base64)
解碼(Base64 → 文字)
特性
- UTF-8 安全:正確處理非 ASCII 字元(使用 encodeURIComponent/unescape 包裹)。
- URL 安全支援:一鍵切換 + / → - _,可選移除填充 =。
- 解碼前處理:可忽略空白、自動還原 URL 安全格式並自動補齊 =。
- 即時互動:輸入自動處理,顯示長度與增長率統計。
- 可用性:複製快捷、結果互填、鍵盤可達,行動端友好。
- 風格統一:無 Tailwind 的 dark: 工具類,完全使用 DaisyUI 主題。
什麼是 Base64
Base64 是一種將二進位資料編碼為 ASCII 文字的方式,常用於文本協定(如 JSON、XML、HTTP)中傳輸圖片或檔案內容。
它將每 3 個位元組映射為 4 個可列印字元,通常會造成約 33% 的體積增長。
標準 Base64 使用 A–Z a–z 0–9 + / 和填充值 =;URL 安全變體將 + / 替換為 - _,以避免 URL 中的轉義問題。
常見問題與注意事項
- 字元集:網頁環境請先對文字做 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);