Base64 编解码器

在线免费的 Base64 编解码器,快速进行 Base64 编码与解码,支持 UTF-8、安全拷贝与清空等便捷操作。

编码(文本 → Base64)

解码(Base64 → 文本)

使用说明

Base64 将二进制数据编码为 ASCII 以便传输和存储。大小会增加约 33%。
编码:将纯文本转换为 Base64 以便更安全地传输。
解码:从 Base64 字符串恢复原始文本。

特性

  • UTF-8 安全:正确处理非 ASCII 字符(使用 encodeURIComponent/unescape 包裹)。
  • URL-safe 支持:一键切换 + / → - _,可选移除填充 =。
  • 解码前处理:可忽略空白、自动还原 URL-safe 并自动补齐 =。
  • 实时交互:输入自动处理,显示长度与增长率统计。
  • 可用性:复制快捷、结果互填、键盘可达,移动端友好。
  • 风格统一:无 Tailwind 的 dark: 工具类,完全使用 DaisyUI 主题。

快速示例

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

什么是 Base64

Base64 是一种将二进制数据编码为 ASCII 文本的方式,常用于在文本协议(如 JSON、XML、HTTP)中传输图片或文件内容。

它将每 3 个字节映射为 4 个可打印字符,通常会造成约 33% 的体积增长。

标准 Base64 使用 A–Z a–z 0–9 + / 和填充符 =;URL-safe 变体将 + / 替换为 - _,以避免 URL 中的转义问题。

常见用途

  • 将图片或小文件嵌入为 Data URI。
  • 在前后端之间传输二进制数据(如加密密文、压缩流)。
  • 对文本进行可打印化处理,避免编码不一致或不可见字符的问题。

常见问题与注意点

  • 字符集:网页环境请先对文本做 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);

Data URI 示例

将图片或小文件以 Data URI 形式内嵌:

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

注意:大文件不建议使用 Data URI,会显著增加 HTML/JSON 体积并影响性能。