Java 中的 base64.decode
Mohammad Irfan
2023年10月12日
- Base64 类的编解码方法
- Java 中的 Base64 编码
- Java 中的 Base64 解码
- 在 Java 中使用 Apache Commons Codec Library 进行编码和解码
- Java 中的 URL 编码和解码
- Java 中的 Mime 编码和解码
本教程介绍了 Java 中的 base64.decode
是什么,以及如何使用它对 Java 中的编码数据进行解码。
Java 在其 Java 8 版本中添加了一个新类 Base64
。这个类有几个嵌套的类,如编码器和解码器,可用于编码和解码数据。它允许多种编码功能,例如基本编码、URL 编码、MIME 编码和对每种编码的解码支持。你可以在下面看到每个目的的方法。
Base64 类的编解码方法
// Basic Encoding Decoding
public static Base64.Decoder getDecoder() public static Base64
.Encoder getEncoder()
// Url Encoding Decoding
public static Base64.Decoder getUrlDecoder() public static Base64
.Encoder getUrlEncoder()
// Mime Encoding Decoding
public static Base64.Decoder getMimeDecoder() public static Base64.Encoder getMimeEncoder()
在本文中,我们将学习编码和解码基本和其他类型的编码。让我们从一些例子开始。
Java 中的 Base64 编码
这是一个基本的编码示例。Java 提供了 getEncoder()
方法来编码数据。请参阅下面的示例。
import java.io.UnsupportedEncodingException;
import java.util.Base64;
import java.util.Base64.Encoder;
public class SimpleTesting {
public static void main(String[] args) throws UnsupportedEncodingException {
String msg = "This is confidential";
System.out.println("Message before encoding: " + msg);
byte[] bytes = msg.getBytes("UTF-8");
Encoder encoder = Base64.getEncoder();
String encoded = encoder.encodeToString(bytes);
System.out.println("Message after encoding: " + encoded);
}
}
输出:
Message before encoding: This is confidential
Message after encoding: VGhpcyBpcyBjb25maWRlbnRpYWw=
Java 中的 Base64 解码
在这里,我们使用了 getDecoder()
方法来解码编码数据。此方法以字节为单位返回结果。因此,为了验证,我们使用了一个 String
构造函数将数据返回到 String 中。
import java.io.UnsupportedEncodingException;
import java.util.Base64;
import java.util.Base64.Encoder;
public class SimpleTesting {
public static void main(String[] args) throws UnsupportedEncodingException {
String msg = "This is confidential";
System.out.println("Message before encoding: " + msg);
byte[] bytes = msg.getBytes("UTF-8");
Encoder encoder = Base64.getEncoder();
String encoded = encoder.encodeToString(bytes);
System.out.println("Message after encoding: " + encoded);
byte[] decoded = Base64.getDecoder().decode(encoded);
String decodedMsg = new String(decoded);
System.out.println("Decoded Message " + decodedMsg);
}
}
输出:
Message before encoding: This is confidential
Message after encoding: VGhpcyBpcyBjb25maWRlbnRpYWw=
Decoded Message This is confidential
在 Java 中使用 Apache Commons Codec Library 进行编码和解码
这是在 Java 中编码和解码数据的另一种解决方案。在这里,我们使用编解码器库及其 Base64
类。它提供了 encodeBase64()
方法,该方法返回可以使用 decodeBase64()
方法进一步解码的编码字符串。请参阅下面的示例。
import java.io.UnsupportedEncodingException;
import org.apache.commons.codec.binary.Base64;
public class SimpleTesting {
public static void main(String[] args) throws UnsupportedEncodingException {
String msg = "This is confidential";
System.out.println("Message before encoding: " + msg);
byte[] bytes = msg.getBytes("UTF-8");
String encoding = new String(Base64.encodeBase64(bytes));
System.out.println("---------After Encoding-----------");
System.out.println(encoding);
// Decoding
String decoding = new String(Base64.decodeBase64(encoding));
System.out.println("---------After Decoding----------");
System.out.println(decoding);
}
}
输出:
Message before encoding: This is confidential
---------After Encoding-----------
VGhpcyBpcyBjb25maWRlbnRpYWw=
---------After Decoding----------
This is confidential
Java 中的 URL 编码和解码
正如我们在开始时所说的,Java Base64 也可用于编码和解码 URL。因此,在此示例中,我们使用 getUrlEncoder()
方法进行编码,并使用 getUrlDecoder()
方法对 URL 进行解码。请参阅下面的示例。
import java.io.UnsupportedEncodingException;
import java.util.Base64;
import java.util.Base64.Encoder;
public class SimpleTesting {
public static void main(String[] args) throws UnsupportedEncodingException {
String url = "https://www.delftstack.com/";
System.out.println("Message before encoding: " + url);
byte[] bytes = url.getBytes("UTF-8");
Encoder encoder = Base64.getUrlEncoder();
String encoded = encoder.encodeToString(bytes);
System.out.println("Message after encoding: " + encoded);
// Decoding
String decoding = new String(Base64.getUrlDecoder().decode(encoded));
System.out.println("---------After Decoding----------");
System.out.println(decoding);
}
}
输出:
Message before encoding: https://www.delftstack.com/
Message after encoding: aHR0cHM6Ly93d3cuZGVsZnRzdGFjay5jb20v
---------After Decoding----------
https://www.delftstack.com/
Java 中的 Mime 编码和解码
为了对 mime 数据进行编码,Java 提供了 getMimeEncoder()
方法,该方法返回编码的字节并解码 Java 提供的 getMimeDecoder()
方法。请参阅下面的示例。
import java.io.UnsupportedEncodingException;
import java.util.Base64;
import java.util.Base64.Encoder;
public class SimpleTesting {
public static void main(String[] args) throws UnsupportedEncodingException {
String msg = "This is \n confidential \n file";
System.out.println("Message before encoding: " + msg);
byte[] bytes = msg.getBytes("UTF-8");
Encoder encoder = Base64.getMimeEncoder();
String encoded = encoder.encodeToString(bytes);
System.out.println("Message after encoding: " + encoded);
// Decoding
String decoding = new String(Base64.getMimeDecoder().decode(encoded));
System.out.println("---------After Decoding----------");
System.out.println(decoding);
}
}
输出:
Message before encoding: This is
confidential
file
Message after encoding: VGhpcyBpcyAKIGNvbmZpZGVudGlhbCAKIGZpbGU=
---------After Decoding----------
This is
confidential
file