哪个Java库提供base64编码/解码?

时间:2013-01-19 10:02:28

标签: java

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

4 个答案:

答案 0 :(得分:247)

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

答案 1 :(得分:13)

如果您是Android开发人员,可以使用android.util.Base64课程。

答案 2 :(得分:11)

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

答案 3 :(得分:4)

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