87

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

4

4 回答 4

293

爪哇 9

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

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

爪哇 8

Java 8 现在提供java.util.Base64base64 编码和解码。

编码

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

javax.xml.bind.DatatypeConverter从 Java 6 开始,可以使用鲜为人知的类。这是 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
于 2013-01-19T10:19:34.543 回答
15

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

通过 Maven:

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

直接下载

于 2013-01-19T10:03:28.060 回答
13

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

于 2015-03-26T18:29:36.857 回答
5

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

于 2013-01-19T10:14:37.600 回答