跳到主要内容
PulsarKit

Base64编码解码

把文本或文件编码为Base64,或者解码回原样。URL安全字母表、Data URI和MIME换行都能处理。

把文件拖到这里

.txt, .b64, .base64 · 最大150 MB

Base64怎么编码和解码

  1. 1

    选择编码或解码

    同一个界面可以双向转换。方向是第一项设置,这样就不会不小心把内容编码两次。

  2. 2

    粘贴文本或拖入文件

    任何类型的文件都能编码;解码时可以粘贴字符串、Data URI,或者拖入包含它们的文本文件。

  3. 3

    复制结果或下载

    解码结果会自动识别为文本或二进制,并配上正确的扩展名。

Base64能做什么,不能做什么

Base64之所以存在,是因为有些通道只能传输可打印文本:邮件正文、JSON字符串字段、HTML属性、HTTP头。它把每三个字节映射成64字符字母表里的四个字符,所以输出总是比输入大约多三分之一。它是编码,不是加密:任何人不需要密钥就能解码,字母表也是公开的。如果内容是机密,Base64起不到任何保护作用;粘贴到Base64字段里的令牌,编码之后和编码之前一样暴露。

Data URI和URL安全字母表

Data URI在编码后的字节前面加一个注明媒体类型的前缀,所以data:image/png;base64,…可以直接用作图片来源或CSS背景。编码文件时,媒体类型取自文件本身;编码粘贴的文本时,由你来填写。URL安全字母表把+和/换成-和_,并去掉末尾的填充,因为这三个字符在URL或文件名里有自己的含义。解码时两种字母表都能接受,不需要事先说明是哪一种,并且完全忽略换行,所以按MIME或PEM格式换行的字符串可以原样粘贴进来。

准确报错,不悄悄输出乱码

Base64字符串如果含有字母表以外的字符,或者长度除以四余一,就不可能解码出有意义的内容。工具不会返回被截断的字节,而是报告出错字符的位置,方便在很长的字符串里找到它。还有一种真实存在又容易混淆的情况:Data URI用的是百分号编码而不是Base64,两者都以data:开头。这样的字符串会被识别出来,并提示改用URL解码器,而不会被当成Base64读取,输出一堆乱码。

在浏览器里编码,不在服务器上

转换完全在这个标签页里完成,使用浏览器自带的基础功能,并分块处理,大文件也不会耗尽内存。什么都不上传,这一点很重要,因为Base64内容里经常有证书、密钥和私人文档。

常见问题

Base64是一种加密吗?

不是。它是可逆的编码,字母表公开,也没有密钥。任何拿到字符串的人都能还原出原始字节,所以它保护不了任何东西,只是让二进制数据能安全地通过只支持文本的通道传输。

什么是Data URI?

一种把文件的媒体类型和Base64内容放在一起的字符串,比如data:image/png;base64,iVBOR…。它可以直接用作图片来源或CSS背景,小资源就不需要再单独发一次网络请求。

什么时候需要URL安全字母表?

因为+和/在URL和文件名里有特殊含义,=在查询字符串里也有自己的作用。URL安全版本改用-和_,并省略填充,JWT和很多API要求的就是这种格式。

为什么结果比输入长三分之一?

按设计,三个字节变成四个字符,所以在加换行之前,输出是输入的4/3。这部分额外开销是只用可打印字符的代价。

怎么解码成文件而不是文本?

自动模式已经会这样做:如果解码出的字节不是有效的UTF-8文本,你得到的就是文件。你也可以强制输出为文件并设置文件名;如果Data URI里带有媒体类型,扩展名会按它自动修正。

为什么提示字符无效?

因为字符串里有Base64字母表以外的字符,常见的是复制时带进来的多余引号或HTML实体,或者字符串被截断了。报告的位置会指向需要检查的那个字符。

我的文件会上传吗?

不会。编码和解码都用浏览器的内置函数在本地完成,不用第三方库,也不经过服务器,关闭标签页后什么都不会保留。

相关工具