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

Ada*_*Lee 73 java

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

Ada*_*dam 258

Java 9

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

module org.example.foo {
    requires java.xml.bind;
}
Run Code Online (Sandbox Code Playgroud)

Java 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=
Run Code Online (Sandbox Code Playgroud)

解码

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

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=  
Run Code Online (Sandbox Code Playgroud)

解码

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

  • 我到目前为止使用的是Base64类,但现在我必须用Java 7运行一个应用程序.到目前为止,我还不知道DatatypeConverter类.谢谢. (5认同)

Paw*_*wan 13

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


Kev*_*sox 12

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

通过Maven:

<dependency>
    <groupId>commons-codec</groupId>
    <artifactId>commons-codec</artifactId>
    <version>20041127.091804</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

直接下载


JB *_*zet 5

番石榴还具有Base64(在其他编码和非常有用的东西中)

  • Guava也是22k的方法,除非您也要导入许多其他库,否则这对您来说可能不是什么大问题。我最近亲自[[DEX 65k方法限制)](https://medium.com/@rotxed/dex-skys-the-limit-no-65k-methods-is-28e6cb40cf71)碰到了这面可爱的墙我不需要Google Play,但我只能使用100种方法。但是,删除番石榴后,我恢复了大约22k的方法。 (7认同)