在Java中编码为Base64

我需要用Java中的Base64编码对一些数据进行编码。我该怎么做?提供Base64编码器的类的名称是什么


我尝试使用sun.misc.BASE64Encoder类,但没有成功。我有以下一行Java 7代码:

write(新的sun.misc.BASE64Encoder().encode(buf));

我正在使用Eclipse。Eclipse将此行标记为错误。我导入了所需的库:

导入sun.misc.base64编码器;
导入sun.misc.base64解码器;

但同样,它们都显示为错误。我发现此处有类似帖子

我使用Apache Commons作为建议的解决方案,包括:

导入org.apache.commons.*;

并导入从以下位置下载的JAR文件:http://commons.apache.org/codec/

但问题依然存在。Eclipse仍然显示前面提到的错误。我该怎么办

您需要更改类的导入:

导入org.apache.commons.codec.binary.Base64;

然后将类更改为使用Base64类

下面是一些示例代码:

byte[]encodedBytes=Base64.encodeBase64(“Test.getBytes());
System.out.println(“encodedBytes”+新字符串(encodedBytes));
字节[]decodedBytes=Base64.decodedbase64(encodedBytes);
System.out.println(“decodedBytes”+新字符串(decodedBytes));

然后读为什么不应该使用sun.*软件包


更新(2016-12-16)

现在,您可以将java.util.Base64与java一起使用;8.首先,像平常一样导入它:

导入java.util.Base64;

然后使用Base64静态方法,如下所示:

byte[]encodedBytes=Base64.getEncoder().encode(“Test.getBytes());
System.out.println(“encodedBytes”+新字符串(encodedBytes));
字节[]decodedBytes=Base64.getDecoder().decode(encodedBytes);
System.out.println(“decodedBytes”+新字符串(decodedBytes));

如果您直接想要对字符串进行编码并将结果作为编码字符串,您可以使用以下方法:

字符串encodeBytes=Base64.getEncoder().encodeToString((userName+”:“+password).getBytes());

请参见Base64的Java文档

发表评论