Base64 存在的意义是将字节数据通过只处理文本的通道传输,因此它出现在 数据URL、邮件附件、JSON Web Token以及任何需要在单个字符串值中保存 整个文档的配置格式中。
大多数浏览器 Base64 工具存在的 bug
浏览器内置的 btoa 函数拒绝任何超过 U+00FF 码位的字符。一旦你的 JSON
包含重音字母、货币符号或表情符号,btoa 就会抛出错误,这就是为什么
许多快速 Base64 工具在真实文本接触它们时立即崩溃。
使用 JSON 到 Base64 转换器
此工具先编码为 UTF-8 字节,这是所有其他语言和所有服务器的做法,因此 结果与后端对同一文档生成的结果一致。编码
{"name":"café","price":"₹500","clef":"𝄞"}
生成的 Base64 字符串通过浏览器自身的标准 atob 和 TextDecoder
解码后,可以恢复为完全相同的原始文档:café、₹500 和音乐符号
𝄞 全部保留,包括最后一个字符,它在 JavaScript 中需要代理对,
在 UTF-8 中需要四个字节。
三种失败,加以区分
解码可能以三种真正不同的方式出错,将它们全部笼统地称为“无效输入” 会掩盖你实际看到的是哪一种:
- 完全不是 Base64。 Base64 字母表之外的字符会被直接点名:
This is not Base64: "!" is not a Base64 character,并显示位置。 - 有效的 Base64,但字节不是文本。 字符串作为字节解码正常, 但这些字节不是有效的 UTF-8,通常意味着你有的是二进制文件的 Base64 而不是文档的。
- 有效文本,但不是 JSON。 Base64 完美解码为一个字符串,而该 字符串不是 JSON 文档,使用格式化器和验证器对损坏 JSON 给出的 同类消息进行报告。
它接受哪些格式
解码允许 data: URL 前缀、Base64 文本中的换行符,以及用 - 和 _
替代 + 和 / 的 URL 安全字母表。直接粘贴从浏览器网络标签页复制的
数据 URL;前缀会自动去除。
这是加密吗
不是。Base64 是一种编码,不是密码。任何人都可以用任何语言的一行 代码解码它,包括将其粘贴到本工具的反方向中。它的作用是使字节可以 安全地通过纯文本通道传输,而不是对它们保密。