Apache Commons Codec Base64 是 sun.misc.BASE64 的替代品吗?
Is Apache Commons Codec Base64 a drop-in replacement for sun.misc.BASE64?
背景
这是我最初的问题 because 的后续问题,即 Apache Commons Codec Base64 API 是迁移使用 sun.misc
Base64 的代码的替代品APIs.
问题
org.apache.commons.codec.binary.Base64
是否是不受支持的内部 Java[=45] 的替代品 =] sun.misc.BASE64Encoder
和 sun.misc.BASE64Decoder
?
直接替换 意味着 encoding/decoding 来自两种实现(Apache Commons Codec 和 sun.misc
) 是相等的,因此它们可以互换使用。
to my 明确表明,对于至少一种边缘情况,Java 8 java.util.Base64
MIME 编码器提供的结果与不受支持的内部 Java API sun.misc.BASE64Encoder
.
所以让我们使用 Apache Commons Codec library.
再次检查边缘情况
边缘案例测试
对于以下测试,我使用 sun.misc.BASE64Encoder
OpenJDK 7 和 Apache Commons Codec 库 1.14 的实现。
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));
}
}
这将导致输出
enc1 = <AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
>
enc2 = <AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA>
false
结论
鉴于测试输出,我得出结论 Apache Commons Codec Base64 API 不是替代品迁移使用 sun.misc
Base64 APIs.
的代码
背景
这是我最初的问题 sun.misc
Base64 的代码的替代品APIs.
问题
org.apache.commons.codec.binary.Base64
是否是不受支持的内部 Java[=45] 的替代品 =] sun.misc.BASE64Encoder
和 sun.misc.BASE64Decoder
?
直接替换 意味着 encoding/decoding 来自两种实现(Apache Commons Codec 和 sun.misc
) 是相等的,因此它们可以互换使用。
java.util.Base64
MIME 编码器提供的结果与不受支持的内部 Java API sun.misc.BASE64Encoder
.
所以让我们使用 Apache Commons Codec library.
再次检查边缘情况边缘案例测试
对于以下测试,我使用 sun.misc.BASE64Encoder
OpenJDK 7 和 Apache Commons Codec 库 1.14 的实现。
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));
}
}
这将导致输出
enc1 = <AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
>
enc2 = <AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA>
false
结论
鉴于测试输出,我得出结论 Apache Commons Codec Base64 API 不是替代品迁移使用 sun.misc
Base64 APIs.