sun.misc.BASE64Encoder / Decoder用于获取byte []

时间:2010-02-15 15:45:42

标签: java

我正在尝试使用sun.misc.BASE64Encoder / Decoder,但此代码:

(new sun.misc BASE64Encoder()).encode(new    
    sun.misc.BASE64Decoder().decodeBuffer("test string XML:"))

返回“test / string / XML /” 我很尴尬

4 个答案:

答案 0 :(得分:22)

不要使用sun.misccom.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。