Java中的Base64编码

我正在使用Eclipse。 我有以下代码行:

wr.write(new sun.misc.BASE64Encoder().encode(buf));

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));

然后阅读为什么你不应该使用sun。*包。


更新(16/12/2016)

您现在可以使用Java8的java.util.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));

有关更多信息,请参阅Javadocs for Base64:https://docs.oracle.com/javase/8/docs/api/java/util/Base64.html


使用Java 8永远不会迟到的类加入: java.util.Base64


您也可以使用base64编码进行转换。 要做到这一点,你可以使用javax.xml.bind.DatatypeConverter#printBase64Binary方法

例如:

byte[] salt = new byte[] { 50, 111, 8, 53, 86, 35, -19, -47 };
System.out.println(DatatypeConverter.printBase64Binary(salt));
链接地址: http://www.djcxy.com/p/17679.html

上一篇: Base64 Encoding in Java

下一篇: gettting a random number from 100 to 999