You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中两种Base64转换方式的差异及结果不同原因

两种Java Base64编码方式的差异原因解析

这两种编码结果的差异,核心在于你使用了两种不同的Base64编码器:

  • 第一种调用的Base64.getUrlEncoder()是URL安全的Base64编码器
  • 第二种调用的Base64.getEncoder()是标准Base64编码器

关键差异:字符替换规则

标准Base64编码会使用+和/这两个字符,但这两个字符在URL、Cookie等场景中属于特殊符号(+会被解析为空格,/是路径分隔符),直接使用会导致编码内容失效。因此URL安全的Base64做了针对性替换:

  • 将标准Base64中的+替换为-
  • 将标准Base64中的/替换为_
    两种编码器都会保留=作为填充字符,其余编码字符完全一致。

对应你的示例结果

对比你给出的两组编码结果:

第一种(URL安全编码器):1HuW7rb7_l7NC7LwR7cRV2K-rlr7SnGdoEuGntxDKX8=
第二种(标准编码器):1HuW7rb7/l7NC7LwR7cRV2K+rlr7SnGdoEuGntxDKX8=

可以清晰看到:

  • 第一种里的_对应第二种里的/
  • 第一种里的-对应第二种里的+
    其余字符完全匹配,完全符合上述替换规则。

内容的提问来源于stack exchange,提问作者Atul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 10:36:24