我正在尝试使用sun.misc.BASE64Encoder / Decoder,但此代码:
(new sun.misc BASE64Encoder()).encode(new
sun.misc.BASE64Decoder().decodeBuffer("test string XML:"))
返回“test / string / XML /” 我很尴尬
答案 0 :(得分:22)
不要使用sun.misc
或com.sun
类。它们不能保证在不同版本的jre之间保持一致。
使用commons-codec Base64.encodeBase64(..)
和Base64.decodeBase64(..)
答案 1 :(得分:15)
使用班级:
javax.xml.bind.DatatypeConverter
它有两种感兴趣的方法:
public static byte[] parseBase64Binary( String lexicalXSDBase64Binary )
public static String printBase64Binary( byte[] val )
答案 2 :(得分:7)
您首先解码字符串“test string XML:”,它实际上不是有效的Base64,因为它包含空格和冒号,其中没有一个是有效的B64字符。我认为您打算编码然后解码,如下所示:
(new sun.misc.BASE64Decoder().decodeBuffer(new sun.misc.BASE64Encoder().encode("test string XML:"))
答案 3 :(得分:1)
我想你想要:
String s = "Hello world";
new sun.misc.BASE64Encoder().encode(s.getBytes("UTF-8"));
更好的是,使用commons utils作为之前建议的答案。如果你不能在另一个jar上添加外部依赖,那么只能使用sun.misc.Base64Encoder。