简体中文
怎么进行 Base64 编码和解码
这个 Base64 编码解码工具可以同时双向工作。在左侧输入纯文本,右侧就出现 Base64;在右侧粘贴 Base64,左侧就出现解码后的文字。Hello 会变成 SGVsbG8=,粘贴 SGVsbG8= 又会还原成 Hello。
同样的两个框还能处理另外四种格式:二进制、十六进制、URL 编码和 HTML 实体。在右侧粘贴内容时,工具会分析它并切换到对应的格式,所以一串 0 和 1 会被当作二进制读取,不用你手动选择。如果你不小心把编码后的字符串粘贴到了纯文本框里,它会提示你改为解码。
Base64 到底做了什么
Base64 把任意字节转换成 64 个安全字符(A–Z、a–z、0–9、+ 和 /),让二进制数据能通过为文本设计的系统传输:邮件、JSON、HTML 属性、环境变量。它每次取 3 个字节(24 位),拆成四段 6 位,每段写成一个字符。
输入不是 3 字节的整数倍时,末尾用 = 号填充:Ma 是 TWE=,M 是 TQ==。Base64 不是加密。任何人一秒钟就能解开,所以千万不要以为用 Base64 写的密码就藏住了。
标准还是 URL 安全?
+ 和 / 字符会破坏网址和文件名,所以 URL 安全的变体改用 - 和 _,并且通常省略填充。字节 FB FF 在标准 Base64 中是 +/8=,在 URL 安全形式中是 -_8。JWT 令牌和很多 API 密钥用的都是 URL 安全形式。解码时不需要选择:两种字母表都能接受,有没有填充都行,空格和换行也会被忽略。
如果邮件正文或 PEM 证书需要 MIME 格式的输出,请勾选每 76 字符换行。
常见字符在各种格式下的写法
这里的所有转换都经过 UTF-8,几乎所有网站和 API 都用这种编码。这就是为什么 é 占两个字节,一个 emoji 占四个字节。跳过这一步的工具会把带重音的字母弄成乱码,这也是大家对在线 Base64 解码器最常见的抱怨。
| 字符 | Base64 | 二进制 | 十六进制 | URL |
|---|---|---|---|---|
| A | QQ== | 01000001 | 41 | A |
| a | YQ== | 01100001 | 61 | a |
| 空格 | IA== | 00100000 | 20 | %20 |
| & | Jg== | 00100110 | 26 | %26 |
| é | w6k= | 11000011 10101001 | C3 A9 | %C3%A9 |
| € | 4oKs | 11100010 10000010 10101100 | E2 82 AC | %E2%82%AC |
文本转二进制,二进制转文本
选择二进制,文本的每个字节都会写成 8 位。Hi 会变成 01001000 01101001。关闭字节之间加空格可以得到一整串不间断的数字。
要把二进制翻译成文字,就把这些位粘贴到右侧框里。每 8 位读作一个字节。有些网站用 7 位表示 ASCII(1001000 1101001);只要各组之间用空格分隔,就会在前面补一个 0 并正确读取。没有空格时,总位数必须是 8 的倍数,错误提示会告诉你找到了多少位,方便你找出缺少的那一位。
十六进制的原理相同,每个字节两位数字。解码时,0x、\x、冒号和逗号之类的前缀和分隔符都会被去掉,所以可以直接从调试器或 C 数组里粘贴。
URL 编码和解码
URL 编码用 % 加两位十六进制数字替换不安全的字符:空格变成 %20,é 变成 %C3%A9。请选择正确的编码范围:
- 参数部分会编码除字母、数字和 - _ . ! ~ * ' ( ) 以外的所有字符。用于单个查询参数值,例如 ?q=rock%20%26%20roll。如果这里用了“完整网址”,& 会被保留,把你的参数拆成两半。
- 完整网址不处理 : / ? # & =,所以整个地址仍然可以点击。
- 空格编码为 + 与 HTML 表单发送数据的方式一致。解码从表单提交或搜索网址中复制的文本时请勾选,否则结果里会留下 + 号。
HTML 实体
HTML 模式会转义可能破坏标记的五个字符:& < > " 和 '。所以 <b> 会变成 <b>,显示为文字而不会让内容变粗。解码时既能识别 é 和 这样的命名实体,也能识别 €(€)这样的数字实体。
图片转 Base64 Data URI
把文件拖到底部的框里,就能得到它的 Base64,可以输出为 Data URI、纯字符串、<img> 标签或 CSS 背景。大小读数会显示代价。Base64 会多出三分之一,所以只对 1 KB 图标这类小东西划算,这时省下一次 HTTP 请求比多出的字节更重要。对于 200 KB 的照片,普通图片文件更好:它更小,能被缓存,也不会让你的 HTML 或 CSS 变得臃肿。
| 文件大小 | Base64 大小 |
|---|---|
| 1 KB(1,024 字节) | 1,368 个字符 |
| 10 KB | 13,656 个字符 |
| 50 KB | 68,268 个字符 |
| 1 MB | 1,398,104 个字符 |
反过来也可以。在右侧粘贴 Base64 或 Data URI,如果内容不是文本,工具会读取开头的字节来判断文件类型(PNG、JPEG、GIF、WebP、PDF、ZIP、MP3 等),为图片显示预览,并提供带正确扩展名的下载。
不上传任何内容。这一点在这里比平时更重要,因为大家解码的字符串往往是 API 密钥、会话令牌和邮件附件。
常见问题
怎么解码 Base64?
把 Base64 粘贴到右侧框里,解码后的文字会立刻出现在左侧。例如 SGVsbG8= 解码为 Hello。如果结果是图片或 PDF 而不是文字,会出现“保存为文件”按钮。
怎么把文字转成二进制?
选择“二进制”,在左侧输入文字。每个字节变成 8 位,所以 Hi 会变成 01001000 01101001。英文以外的字符,比如 é,在 UTF-8 中占两个或更多字节,因此是 16 位或更多。
怎么把二进制代码转回文字?
选择“二进制”,把 0 和 1 粘贴到右侧框里。每 8 位读作一个字节,所以 01001000 01101001 读作 Hi。用空格分隔的 7 位一组也可以,会在前面补一个 0。
怎么把图片转成 Base64 Data URI?
把图片拖到底部的文件框里,然后复制结果。PNG 会变成 data:image/png;base64,iVBORw0KGgo…,可以直接粘贴到 img 的 src 或 CSS 背景里。结果大约比原文件大 33%。
为什么 Base64 比原文件大约 33%?
Base64 把每 3 个字节写成 4 个字符,所以 30 KB 的图片会变成约 40 KB 的文本。MIME 格式每 76 个字符换一行,还会再多出约 2.6%。所以 Data URI 只适合小文件。
Base64 和 URL 安全的 Base64 有什么区别?
URL 安全的 Base64 把 + 换成 -、把 / 换成 _,并且常常省略 = 填充,这样文本就能放进网址或文件名。JWT 令牌用的就是它。这个解码器会自动识别两种字母表。
网址里的 %20 和 %3A 怎么解码?
选择“URL”,把文本粘贴到右侧。%20 变成空格,%3A 变成冒号,所以 https%3A%2F%2Fexample.com 读作 https://example.com。如果文本来自表单(空格写成 +),请勾选“空格编码为 +”。
我的文字或文件会发送到服务器吗?
不会。所有编码和解码都用 JavaScript 在你的浏览器里运行,所以 API 密钥、令牌和私人文件都可以放心处理。