DatatypeConverter与Base64

时间:2016-07-25 09:04:45

标签: java java-8 base64

我目前正在研究一个需要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?有明显不同的表现吗?

1 个答案:

答案 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