Base64 编码 / 解码
输入即时将文本转换为 Base64 或解码回来。完整支持 UTF-8,因此带重音符号的字母、表情符号和非拉丁字母都能正确地双向转换。
Base64 的用途
二进制安全文本,不是加密。
Base64 把任意字节转换成一串只由字母、数字、+ 和 / 组成的字符串,可以安全地嵌入到原始二进制会出问题的 JSON、URL 或邮件中。它不是加密:任何人都能立即将其解码回来,所以它本身不隐藏也不保护任何东西。
URL 安全变体
标准 Base64 中的 + 和 / 字符在 URL 中具有特殊含义。URL 安全变体会把它们替换为 - 和 _,并去掉末尾的 = 填充符,因此结果可以直接用在查询字符串或文件名中。
工作原理
编码时,你的文本首先通过浏览器的 TextEncoder API 转换为原始 UTF-8 字节,然后这些字节被送入内置的 btoa() 函数。这一步很关键:单独使用 btoa() 只能处理 Latin-1 字符,遇到其他字符就会报错,因此跳过这一步的工具在处理表情符号、重音字符或任何非拉丁文字时会悄悄出错。解码则以相反顺序执行同样的流程:atob() 把 Base64 转回字节,TextDecoder 再把这些字节重新组装成文本。解码器还特意做得很宽容:会去除空白,同时接受标准和 URL 安全两种字母表,并自动补回被去掉的 = 填充符,因此直接从 JWT 或查询字符串中复制出来的片段无需手动修正就能正确解码。
预计输出会比输入大约大 33%。Base64 使用 64 个符号,每个符号只能携带 6 位信息,所以每 3 字节的输入会变成 4 个字符的输出。这就是为什么把一张 1 MB 的图片内联为 Base64 数据 URI 会耗费大约 1.37 MB 的 HTML,也是为什么 Base64 是一种传输格式,而不是压缩格式。
两个方向的转换都在这个页面自身的 JavaScript 中随每次按键实时运行,只使用 btoa、atob 以及浏览器自带的文本编码 API。你可以自己验证:打开开发者工具,切换到网络面板,随意输入。不会有任何请求把你的文本发送到任何地方。