Decodex

DECODEX · BASE64 · UTF-8

Base64末尾的=和==是什么意思:填充与错误排查

用f、fo和foo解释Base64填充,检查省略的=、无效长度以及部分填充错误。

末尾的=是填充,不是原文字符。Base64用4个字符表示3个字节。最后剩1个字节时,带填充格式需要==;剩2个字节时需要=。

计算字节数,不是文字数

每个数据字符表示6位。3个字节共24位,正好对应4个字符。中文和表情符号在UTF-8中可能占多个字节。😀占4字节,编码为8J+YgA==。表格比较了1、2和3字节的输入。

恢复省略的填充

当格式允许省略填充时,先去掉空白,再计算长度除以4的余数。余2补==,余3补=,余0无需补充。余1表示无效或截断的数据,增加=不能修复。请检查API要求的格式。

为什么Zg成功而Zg=失败

Decodex为完全省略填充的Zg恢复填充并得到f,Zg==也有效。Zg=只有部分填充且总长度错误,所以被拒绝。A=AA和Zg===也会失败。不要反复增删=来掩盖复制错误。

转换此示例

文本UTF-8 bytesBase64填充
f1Zg====
fo2Zm8==
foo3Zm9v—

转换此示例 →

Base64 → UTF-8 · UTF-8 → Base64

常见问题

所有Base64都以=结尾吗?

不是。当字节数是3的倍数时,无需填充。某些协议也会明确省略填充。

参考资料

更多Base64指南