在 Java 中编码为 Base64

新手上路,请多包涵

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


我尝试使用 sun.misc.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.*;

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

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

原文由 Jury A 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 939
2 个回答

您需要更改类的导入:

 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.* packages


更新(2016-12-16)

您现在可以在 Java 8 中使用 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));

如果您直接想对字符串进行编码并将结果作为编码字符串获取,则可以使用:

 String encodeBytes = Base64.getEncoder().encodeToString((userName + ":" + password).getBytes());

有关更多信息,请参阅 Base64 的 Java 文档

原文由 Frank 发布,翻译遵循 CC BY-SA 4.0 许可协议

使用 Java 8 的永不过时加入乐趣类: java.util.Base64

 new String(Base64.getEncoder().encode(bytes));

原文由 bratan 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题