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

Java Base64解码HTTP请求Authorization头部异常问题咨询

问题分析与解决

嘿,这个坑很多Java新手都踩过!你看到的[B@16d9ea61根本不是解码失败,而是字节数组的默认toString()输出,和你要的明文凭证完全不是一回事~

问题根源

Base64.getDecoder().decode()方法返回的是byte[](字节数组)类型,直接调用它的toString()方法,Java并不会把字节转换成对应的字符串,而是输出这个数组对象的内存哈希标识——格式就是[B(代表字节数组类型)加上@和十六进制的哈希值,也就是你看到的结果。

修正后的代码

你需要把解码得到的字节数组通过String的构造器转换成字符串,最好还指定字符编码(比如UTF-8),避免因系统默认编码差异导致乱码:

// 提取Authorization头部中的Base64编码部分
String authBase64 = request.getHeader("Authorization").split(" ")[1];
// 解码字节数组并转换为字符串(指定UTF-8编码更稳妥)
String valueDecoded = new String(Base64.getDecoder().decode(authBase64), StandardCharsets.UTF_8);
System.out.println(valueDecoded); // 此时会正确输出monLogin:monMotDePass

额外提示

如果你的项目是Java 8及以上,StandardCharsets.UTF_8是内置的常量,不用额外导入;如果是更老的版本,可以用"UTF-8"字符串代替,但记得处理UnsupportedEncodingException异常哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:43:51