这是一个小的测试程序,它说明了编码字符串中的差异:
byte[] bytes = new byte[57];String enc1 = new sun.misc.base64Enprer().enpre(bytes);String enc2 = new String(java.util.base64.getMimeEnprer().enpre(bytes), StandardCharsets.UTF_8);System.out.println("enc1 = <" + enc1 + ">");System.out.println("enc2 = <" + enc2 + ">");System.out.println(enc1.equals(enc2));其输出为:
enc1 = <AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA>enc2 = <AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA>false
请注意,的编码输出
sun.misc.base64Enprer末尾有换行符。它并不 总是
附加一个换行符,但是如果编码的字符串的最后一行恰好有76个字符,它就会这样做。(作者
java.util.base64认为这是实现中的一个小错误
sun.misc.base64Enprer-参见审查主题)。
这看似微不足道,但是如果您有一个依赖于此特定行为的程序,则切换编码器可能会导致输出格式错误。因此,我断定
java.util.base64是 不是
下降的替代产品
sun.misc.base64Enprer。
当然, 意图 的
java.util.base64是,它是一个功能上等同,RFC-
符合性,高性能,完全支持和指定的更换这是旨在支持代码迁移远离
sun.misc.base64Enprer。但是,您在迁移时需要注意一些这样的极端情况。



