问题描述
- 开始使用
Base64.getMimeDecoder().decode(base_url).map(_.toChar).mkString
去解码,部分数据也提示如题的错误
- 然后尝试使用
Base64.getUrlDecoder().decode(base_url).map(_.toChar).mkString
,会提示decode
不属于getUrlDecoder
原因
- 原因应该是编码后的URL长度不符合要求(要求长度是4的倍数),导致的这个问题
解决
- 开始看到了这个,还以为这个bug没解决呢,后来想想不可能,这么容易改的,早应该有人改掉了,继续搜
- 看见了这个,遂尝试使用下面代码,最终解决了问题:
import java.util.Base64
val decoder = Base64.getUrlDecoder();
var url = new String(decoder.decode(base_url))
参考
- https://bugs.openjdk.java.net/browse/JDK-8162339
- http://farenda.com/java/java-base64-url/
- https://stackoverflow.com/questions/5641303/base64url-in-java