Base64 编解码器
在线免费的 Base64 编解码器,快速进行 Base64 编码与解码,支持 UTF-8、安全拷贝与清空等便捷操作。
编码(文本 → Base64)
解码(Base64 → 文本)
特性
- UTF-8 安全:正确处理非 ASCII 字符(使用 encodeURIComponent/unescape 包裹)。
- URL-safe 支持:一键切换 + / → - _,可选移除填充 =。
- 解码前处理:可忽略空白、自动还原 URL-safe 并自动补齐 =。
- 实时交互:输入自动处理,显示长度与增长率统计。
- 可用性:复制快捷、结果互填、键盘可达,移动端友好。
- 风格统一:无 Tailwind 的 dark: 工具类,完全使用 DaisyUI 主题。
什么是 Base64
Base64 是一种将二进制数据编码为 ASCII 文本的方式,常用于在文本协议(如 JSON、XML、HTTP)中传输图片或文件内容。
它将每 3 个字节映射为 4 个可打印字符,通常会造成约 33% 的体积增长。
标准 Base64 使用 A–Z a–z 0–9 + / 和填充符 =;URL-safe 变体将 + / 替换为 - _,以避免 URL 中的转义问题。
常见问题与注意点
- 字符集:网页环境请先对文本做 UTF-8 处理(本工具已内置)。
- URL-safe:URL 参数或路径建议使用 URL-safe 变体,并考虑去除填充符。
- 填充符:某些实现允许省略 =,解码时需自动补齐到 4 的倍数。
- 换行:MIME Base64 可能包含换行,解码时可勾选“忽略空白字符”。
如何通过编程语言进行 Base64 编解码
JavaScript
文本 → Base64(UTF-8 安全)
const encoded = btoa(unescape(encodeURIComponent(text)));
// URL-safe
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-safe
$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-safe 编码(去除填充)
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-safe 编码(无填充)
urlEnc := base64.RawURLEncoding.EncodeToString([]byte(text))
解码(Base64 → 文本)
import (
"encoding/base64"
)
decBytes, err := base64.StdEncoding.DecodeString(enc)
// URL-safe 解码(无填充)
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-safe 编码(无填充)
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-safe 编码(无填充)
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);