【问题标题】:Which Java library provides base64 encoding/decoding? [duplicate]哪个 Java 库提供 base64 编码/解码? [复制]
【发布时间】:2013-01-03 00:06:10
【问题描述】:

我想知道使用哪个库进行 base64 编码/解码?我需要此功能足够稳定以供生产使用。

【问题讨论】:

  • 您可以在询问之前进行搜索。只需谷歌“java base64”。

标签: java


【解决方案1】:

Java 9

使用 Java 8 解决方案。注意 DatatypeConverter 仍然可以使用,但它现在位于需要包含的 java.xml.bind 模块中。

module org.example.foo {
    requires java.xml.bind;
}

Java 8

Java 8 现在提供 java.util.Base64 用于编码和解码 base64。

编码

byte[] message = "hello world".getBytes(StandardCharsets.UTF_8);
String encoded = Base64.getEncoder().encodeToString(message);
System.out.println(encoded);
// => aGVsbG8gd29ybGQ=

解码

byte[] decoded = Base64.getDecoder().decode("aGVsbG8gd29ybGQ=");
System.out.println(new String(decoded, StandardCharsets.UTF_8));
// => hello world

Java 6 和 7

从 Java 6 开始,可以使用鲜为人知的类 javax.xml.bind.DatatypeConverter。这是 JRE 的一部分,不需要额外的库。

编码

byte[] message = "hello world".getBytes("UTF-8");
String encoded = DatatypeConverter.printBase64Binary(message);
System.out.println(encoded);
// => aGVsbG8gd29ybGQ=  

解码

byte[] decoded = DatatypeConverter.parseBase64Binary("aGVsbG8gd29ybGQ=");
System.out.println(new String(decoded, "UTF-8"));
// => hello world

【讨论】:

  • 目前我使用的是 Base64 类,但现在我必须使用 Java 7 运行一个应用程序。到目前为止,我还不知道 DatatypeConverter 类。谢谢。
  • DatatypeConverter 无法开箱即用 Java 9
  • 感谢 java 7 解决方案 - 不敢相信我仍然需要它!
  • parseBase64Binary 不适用于大于 64k 的数据?在这种情况下使用什么(仅使用 java 7)
  • 你救了我们。谢谢!!!
【解决方案2】:

Guava 也有 Base64(以及其他编码和非常有用的东西)

【讨论】:

  • Guava 也是 22k 方法,这对你来说可能没什么大不了的,除非你也导入了很多其他的库。我最近自己撞到了这堵可爱的墙(65k method limit on DEX),在从 google play 中删除了我不需要的所有东西后,我的限制只有 100 种方法。但是,删除番石榴后,我重新获得了大约 22k 方法。
【解决方案3】:

如果您是 Android 开发人员,您可以为此目的使用 android.util.Base64 类。

【讨论】:

  • 问题是只有 api 26+ 运行这个...... 8% 的设备在 2019 年有这个版本......太伤心了。
  • @viniciusgati Base64 是在 api 级别 8 中添加的,这几乎意味着它在现有的 100% 设备上得到支持。
  • @viniciusgati 请注意,Android 有 2 个Base64 类:android.util.Base64(从 API 8 开始)和 java.util.Base64(从 API 26 开始)。导入时注意包名。
【解决方案4】:

Apache Commons 中,commons-codec-1.7.jar 包含一个可用于编码的Base64 类。

通过 Maven:

<dependency>
    <groupId>commons-codec</groupId>
    <artifactId>commons-codec</artifactId>
    <version>20041127.091804</version>
</dependency>

Direct Download

【讨论】:

  • Apache Commons 确实提供了一个可以使用的可行的 Base64 解码器。您可能特别希望将它用于 1.8 之前的 Java 版本,但是有很多更新版本的库可以使用。在撰写本文时,您可以使用比 20041127.091804(上面引用过)更新得多的 1.11。
猜你喜欢
  • 1970-01-01
  • 2023-04-04
  • 2019-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-17
相关资源
最近更新 更多