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

Base64 转文本:解码 Base64 字符串

粘贴 Base64 字符串,读出其中的文本。默认按 UTF-8 解码,如果结果看起来不对,可以切换到 27 种字符集中的任意一种,或者让工具自动判断。

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

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

如何将 Base64 转换为文本

  1. 把 Base64 字符串粘贴到 输入 · Base64 框中。空格、换行和两侧的引号都没问题。
  2. 在 输出 · 文本 中阅读文本。工具下方的状态行会说明输入是否为有效的 Base64、包含多少字节,以及内容看起来像什么。
  3. 如果输出中出现 � 或奇怪的字母,请更改 字符集。自动检测 会检查字节顺序标记、UTF-8 和 UTF-16。
  4. 用 复制输出 复制文本,或用 下载 保存。

反方向转换请使用 文本转 Base64。

如何判断一个字符串是不是 Base64

Base64 字符串只使用 64 个字符,外加用于填充的 =。标准 Base64 含有 + 和 /;URL 安全变体则改用 - 和 _。带填充的字符串长度能被 4 整除,= 只能出现在末尾。

这些规则是必要条件,但不是充分条件。很多普通单词都能满足:Test 是有效的 Base64,解码后是三个毫无意义的字节 4D EB 2D。实用的检查方法是解码字符串,看看能不能得到有意义的内容。如果需要的不只是是或否的判断,Base64 校验工具 会指出字符串违反了哪条字符、长度或填充规则,并给出它是 Base64 的可能性评分。

示例

Base64 字符串文本说明
VGhhbmsgeW91IQ==Thank you!纯 ASCII
SGVsbG8sIFfDtnJsZA==Hello, Wörldö 在 UTF-8 中占两个字节
5L2g5aW9你好六个字节,每个字符三个
0J/RgNC40LLQtdGCПриветUTF-8 编码的西里尔文
QmFzZTY0IGlzIG5vdCBlbmNyeXB0aW9uLg==Base64 is not encryption.任何人都能读出来
dXNlcm5hbWU6c2VjcmV0username:secretHTTP Basic 认证请求头的格式

从最后一行可以看出,任何看到 Authorization: Basic 请求头的人都能读出其中的密码。Basic Auth 解码器 可以把这样的请求头拆分成用户名和密码,编码与加密 解释了为什么真正保证其私密性的是 HTTPS。

从字节到字符串

解码 Base64 得到的是字节。把字节变成字符串是需要字符集的第二步,大多数“文本不对”的问题都出在这一步。大多数语言会把这两步明确分开:

import base64

raw = base64.b64decode("SGVsbG8sIFfDtnJsZA==")
raw                     # b'Hello, W\xc3\xb6rld'
raw.decode("utf-8")     # 'Hello, Wörld'
raw.decode("latin-1")   # 'Hello, Wörld'

在 JavaScript 中,带 fatal: true 的 TextDecoder 会抛出 TypeError,而不是悄悄插入 �;如果你宁愿报错也不想存下损坏的文本,这很有用:

const bytes = Uint8Array.from(atob("Y2Fm6Q=="), c => c.charCodeAt(0));
new TextDecoder("utf-8", { fatal: true }).decode(bytes);
// TypeError: the bytes are not valid UTF-8
new TextDecoder("windows-1252").decode(bytes);   // "café"

更多写法见 Python 和 JavaScript 页面。

输出不是可读文本时

  • 大部分是符号,夹杂几个可读的单词。 字符串里装的是文件。查看状态行中的 看起来像,然后在 Base64 转文件 中打开,它可以预览并保存文件。
  • 字母之间有空隙。 文本是 UTF-16。把 字符集 设为 UTF-16LE。
  • 文本可读,但 é 显示为 é。 文本在被编码之前就已经在某处解码错了。Base64 没有问题,有问题的是源数据。
  • 输出又是 Base64。 它被编码了两次。复制输出,粘贴为输入,再解码一次。
  • 看起来随机的字节,也没有检测到格式。 数据很可能经过了加密或压缩。Base64 解码只是第一层;对于 gzip 或 zlib 数据,试试 gzip Base64 解码器。

常见问题

什么是 Base64 字符串?

只由 A–Z、a–z、0–9、+ 和 / 组成的文本,结尾常带有 = 或 ==。它代表的是字节,可能是文本、图片或任何其他文件,写成这种形式是为了能在只处理普通字符的系统中完好传递。

解码之前,怎么知道 Base64 字符串里是什么?

开头的几个字符往往就能说明:eyJ 是 JSON,PD94bWwg 是 XML,iVBORw0KGgo 是 PNG,JVBERi0 是 PDF。解码后,状态行会给出检测到的格式。见 常见 Base64 前缀。

在 Python 中怎么把 Base64 转换成字符串?

base64.b64decode(s).decode("utf-8")。第一个调用返回字节;.decode() 按你指定的字符集把它们转成 str。

为什么解码出来的文本又是一个 Base64 字符串?

这个值被编码了两次,当系统中的两层各自编码一次时就会这样。把输出粘贴回输入框,再解码一次即可。