Java Apache Commons编解码器Base64是sun.misc.Base64的替代品吗?
背景 这是我原来问题的后续问题,因为Apache Commons编解码器Base64 API是迁移使用Java Apache Commons编解码器Base64是sun.misc.Base64的替代品吗?,java,base64,encoder,Java,Base64,Encoder,背景 这是我原来问题的后续问题,因为Apache Commons编解码器Base64 API是迁移使用sun.miscBase64 API的代码的替代品 问题 org.apache.commons.codec.binary.Base64是不受支持的内部Java APIsun.misc.Base64编码器和sun.misc.Base64解码器的替代品吗 插入替换意味着两种实现(Apache Commons Codec和sun.misc)的编码/解码结果相等,因此,它们可以互换使用。对我来说,至少在
sun.misc
Base64 API的代码的替代品
问题
org.apache.commons.codec.binary.Base64是不受支持的内部Java APIsun.misc.Base64编码器和sun.misc.Base64解码器的替代品吗
插入替换意味着两种实现(Apache Commons Codec和sun.misc
)的编码/解码结果相等,因此,它们可以互换使用。对我来说,至少在一种边缘情况下,Java 8Java.util.Base64
MIME编码器提供的结果与不受支持的内部Java APIsun.misc.BASE64Encoder
不同
让我们使用
边缘案例测试
对于下面的测试,我使用OpenJDK 7和ApacheCommons编解码器库1.14的sun.misc.BASE64Encoder
实现
public class StuartMarksBase64EncodingEdgeCaseTestForApacheCommonsCodec {
public static void main(String[] args) {
byte[] bytes = new byte[57];
String enc1 = new sun_misc_jdk7.BASE64Encoder().encode(bytes);
String enc2 = new String(org.apache.commons.codec.binary.Base64.encodeBase64(bytes));
System.out.println("enc1 = <" + enc1 + ">");
System.out.println("enc2 = <" + enc2 + ">");
System.out.println(enc1.equals(enc2));
}
}
公共类StuartMarksBase64编码EdgeCasetForApacheCommonsCodec{
公共静态void main(字符串[]args){
字节[]字节=新字节[57];
字符串enc1=new sun_misc_jdk7.BASE64Encoder().encode(字节);
String enc2=新字符串(org.apache.commons.codec.binary.Base64.encodeBase64(字节));
System.out.println(“enc1=”);
System.out.println(“enc2=”);
System.out.println(enc1.equals(enc2));
}
}
这将导致输出
enc1 = <AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
>
enc2 = <AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA>
false
enc1=
附件2=
假的
结论
根据测试结果,我得出结论,Apache Commons Codec Base64 API不是迁移使用sun.misc
Base64 API的代码的替代品