上传文件
  1. base64hub
  2. 文本工具
  3. 文本转 Base64

文本转 Base64:把字符串转换为 Base64

输入一个字符串,立即得到它的 Base64。结果取决于字节,所以工具允许你选择字符集,并显示实际编码的字节数。

免费 无需注册,不限次数 本地 不上传任何内容 更新于 2026年10月27日
输入 0 B输出 0 B大小 –

在你的浏览器中处理。此页面无法将你的数据发送到任何地方: 我们如何确认

如何把文本转换为 Base64

  1. 在 输入 · 文本 中输入或粘贴字符串。你输入的内容会被原样编码,包括空格和换行。
  2. Base64 显示在 输出 · Base64 中。按钮下方的 输入 数值显示你的文本变成了多少字节。
  3. 字符集 保持 UTF-8 即可,除非负责解码的系统需要其他字符集。
  4. 如果字符串要放进 URL 或令牌,勾选 URL 安全(- _) 和 不填充(=)。
  5. 点击 复制输出,或点击 下载 将其保存为 base64.txt。

要转换回来,请使用 Base64 转文本,或者点击 互换 在这里直接解码结果。

同一个字符串,可能有多个 Base64 值

Base64 编码的是字节,而字符串只有通过字符集才会变成字节。这就是为什么同样的五个字母会得到四种不同的结果:

字符串字符集字节数Base64
GrüßeUTF-87R3LDvMOfZQ==
GrüßeWindows-1252 或 ISO-8859-15R3L832U=
GrüßeUTF-16LE10RwByAPwA3wBlAA==
GrüßeUTF-16BE10AEcAcgD8AN8AZQ==

看不见的字符同样算数。Hello 是 SGVsbG8=,带一个末尾空格的 Hello 是 SGVsbG8g,Hello 后面跟一个 Windows 换行符则是 SGVsbG8NCg==。在多行的值中,换行符是个经典陷阱:line1 和 line2 用 \n 连接编码为 bGluZTEKbGluZTI=,用 \r\n 连接则是 bGluZTENCmxpbmUy。如果两个系统对同一个值的结果不一致,先比较字节数。

Base64 字符串会有多长

输入的每 3 个字节变成 4 个字符,最后剩下的 1 或 2 个字节用 = 补足到 4 个字符。

输入字节数Base64 字符数示例(重复的 x)
14eA==
24eHg=
34eHh4
48eHh4eA==
1016eHh4eHh4eHh4eA==

所以字符串大约会增大三分之一;如果非 ASCII 字符在 UTF-8 中各占多个字节,增幅会更大。Base64 体积开销 页面给出了换行输出的精确数字。

编码后的字符串用在哪里

人们把字符串转成 Base64,大多是为了让它安全通过那些不欢迎特殊字符的地方:

  • 环境变量和 CI 密钥,带引号、$ 或换行的值在这里会被弄乱。postgres://app:s3cret@db:5432/app 会变成 cG9zdGdyZXM6Ly9hcHA6czNjcmV0QGRiOjU0MzIvYXBw,一行,无需任何转义。
  • Kubernetes Secret,其 data: 中的值必须是 Base64。Kubernetes Secret 解码器 可以把它们读回来。
  • HTTP 请求头,比如编码了 user:password 的 Authorization: Basic。Basic Auth 请求头生成器 会生成完整的请求头。
  • JSON 和 XML 字段,需要携带任意文本,又不想被转义规则困扰(JSON 转 Base64)。

这些用法都不能隐藏值。任何拿到字符串的人都能解码,所以编码后的密钥仍要当作明文密钥对待;见 编码与加密。

在代码中把字符串转为 Base64

import base64

base64.b64encode("Grüße".encode("utf-8")).decode("ascii")   # 'R3LDvMOfZQ=='
base64.b64encode("Grüße".encode("cp1252")).decode("ascii")  # 'R3L832U='
// Node.js
Buffer.from("Grüße", "utf8").toString("base64");     // "R3LDvMOfZQ=="
Buffer.from("Grüße", "utf16le").toString("base64");  // "RwByAPwA3wBlAA=="

两种语言都需要明确写出字符串到字节的转换,字符集的选择就在这一步。更多内容见 Python 和 Node.js 页面。

常见问题

如何把字符串转换为 Base64?

先用某种字符集(几乎所有地方都是 UTF-8)把字符串变成字节,再对字节做 Base64 编码。上面的工具两步都做了;在 Python 中是 base64.b64encode(s.encode("utf-8")).decode()。

同样的文本总是得到同样的 Base64 吗?

只有字节相同时才是。Grüße 在 UTF-8 中是 R3LDvMOfZQ==,在 Windows-1252 中却是 R3L832U=;多一个空格或换行,结果也会改变。

Base64 字符串会有多长?

n 个字节的输入对应 4 × ⌈n / 3⌉ 个字符,不计换行。10 字节的字符串得到 16 个字符;任意长度都可以用 大小计算器 算出来。

能把 Base64 字符串放进配置文件或环境变量吗?

可以,这正是它的主要用途之一:它能把任何值(包括换行和引号)变成一行安全字符。把“换行”保持为“不换行”,就能让它保持在一行。