【发布时间】:2013-01-03 00:06:10
【问题描述】:
我想知道使用哪个库进行 base64 编码/解码?我需要此功能足够稳定以供生产使用。
【问题讨论】:
-
您可以在询问之前进行搜索。只需谷歌“java base64”。
标签: java
我想知道使用哪个库进行 base64 编码/解码?我需要此功能足够稳定以供生产使用。
【问题讨论】:
标签: java
使用 Java 8 解决方案。注意 DatatypeConverter 仍然可以使用,但它现在位于需要包含的 java.xml.bind 模块中。
module org.example.foo {
requires java.xml.bind;
}
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 开始,可以使用鲜为人知的类 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
【讨论】:
Guava 也有 Base64(以及其他编码和非常有用的东西)
【讨论】:
如果您是 Android 开发人员,您可以为此目的使用 android.util.Base64 类。
【讨论】:
Base64 是在 api 级别 8 中添加的,这几乎意味着它在现有的 100% 设备上得到支持。
Base64 类:android.util.Base64(从 API 8 开始)和 java.util.Base64(从 API 26 开始)。导入时注意包名。
在Apache Commons 中,commons-codec-1.7.jar 包含一个可用于编码的Base64 类。
通过 Maven:
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>20041127.091804</version>
</dependency>
【讨论】: