我需要在Java中编码Base64编码中的一些数据。我怎么做呢?提供Base64编码器的类的名称是什么?
我试着利用太阳。BASE64Encoder类,没有成功。我有以下一行Java 7代码:
wr.write(new sun.misc.BASE64Encoder().encode(buf));
我正在使用Eclipse。Eclipse将这一行标记为错误。我导入了所需的库:
import sun.misc.BASE64Encoder;
import sun.misc.BASE64Decoder;
但同样,它们都显示为错误。我在这里找到了一个类似的帖子。
我使用Apache Commons作为建议的解决方案,包括:
import org.apache.commons.*;
并导入从http://commons.apache.org/codec/下载的JAR文件
但问题仍然存在。Eclipse仍然显示前面提到的错误。我该怎么办?
您需要更改类的导入:
import org.apache.commons.codec.binary.Base64;
然后将您的类更改为使用Base64类。
下面是一些示例代码:
byte[] encodedBytes = Base64.encodeBase64("Test".getBytes());
System.out.println("encodedBytes " + new String(encodedBytes));
byte[] decodedBytes = Base64.decodeBase64(encodedBytes);
System.out.println("decodedBytes " + new String(decodedBytes));
然后阅读为什么你不应该使用太阳。*包。
更新(2016-12-16)
您现在可以使用java.util。使用Java 8的Base64。首先,像往常一样导入它:
import java.util.Base64;
然后使用Base64静态方法,如下:
byte[] encodedBytes = Base64.getEncoder().encode("Test".getBytes());
System.out.println("encodedBytes " + new String(encodedBytes));
byte[] decodedBytes = Base64.getDecoder().decode(encodedBytes);
System.out.println("decodedBytes " + new String(decodedBytes));
如果你想直接编码字符串并得到编码后的结果,你可以使用这个:
String encodeBytes = Base64.getEncoder().encodeToString((userName + ":" + password).getBytes());
更多信息请参见Base64的Java文档。