我目前正在研究一个需要64位解码的项目,经过一些研究我在java中发现了这两种方法,
来自 JAVA 8
import java.util.Base64;
byte[] decodedBytes = Base64.getDecoder().decode(encodedUserPassword);
来自 JAVA 6
import javax.xml.bind.DatatypeConverter;
byte[] decodedBytes = DatatypeConverter.parseBase64Binary(encodedUserPassword);
我想知道的是,如果Base64
已经存在,为什么需要DatatypeConverter
?有明显不同的表现吗?
答案 0 :(得分:1)
在 Java9 https://docs.oracle.com/javase/9/docs/api/java.xml.bind-summary.html
上已弃用了整个 javax.xml.bind 模块(甚至删除了)。如果您的项目开始使用Java8以后,请停止使用该程序包,而改用Java8的Base64类,这样以后的Java升级将不会对其产生影响。
另一方面,如果必须与Java7或更早版本保持兼容性,则不能使用Base64(因为它是Java8上引入的)。为此,您应该继续使用DatatypeConverter,或者更好的是,使用另一个独立的库在base 64中进行编码/解码(例如Apache Commons 64)