Java 教程

Java 控制语句

面向对象编程

Java 内置类

Java 文件处理

Java 错误和异常

Java 多线程

Java 同步

Java 网络编程

Java 集合

Java 接口

Java 数据结构

Java 集合算法

高级Java

Java 其他

Java APIs和框架

Java 类引用

Java 有用资源

Java - Base64编码和解码



Java 8中引入了Base64实用程序类,该类具有内置的Base64编码和解码编码器和解码器。我们有三种类型的Base64编码和解码可用。以下是这些新增类型的简要说明:

  • 基本 - 输出映射到A-Za-z0-9+/字符集。编码器不会在输出中添加任何换行符,解码器会拒绝除A-Za-z0-9+/以外的任何字符。

  • URL - 输出映射到A-Za-z0-9+_字符集。输出对URL和文件名安全。

  • MIME - 输出映射到MIME友好格式。输出以每行不超过76个字符表示,并使用回车符'\r'后跟换行符'\n'作为行分隔符。编码输出的末尾没有行分隔符。

基本Base64编码和解码

基本Base64编码器对提供的字符串进行编码,不添加任何换行符。此编码器使用A-Za-z0-9+/字符集中的字符。以下是解释Base64编码器用法的代码片段。

String stringToEncode = "TutorialsPoint?java8";
// Encode using basic encoder
String base64encodedString = Base64.getEncoder().encodeToString(stringToEncode.getBytes("utf-8"));

简单的Base64解码器通过拒绝除A-Za-z0-9+/以外的任何字符来解码Base64编码的字符串。以下是解释Base64解码器用法的代码片段。

// Decode the base64 encoded string using basic decoder
byte[] base64decodedBytes = Base64.getDecoder().decode(base64encodedString);
// print the decoded string		
System.out.println("Original String: " + new String(base64decodedBytes, "utf-8"));

示例:Java中的基本Base64编码和解码

以下示例展示了Base64基本编码器和解码器的用法。我们首先使用Base64.getEncoder()获取的编码器对简单的字符串进行编码,然后使用Base64.getDecoder()方法获取的解码器对返回的编码字符串进行解码。

package com.tutorialspoint;

import java.io.UnsupportedEncodingException;
import java.util.Base64;

public class Base64Tester {
   public static void main(String[] args) throws UnsupportedEncodingException {
      String stringToEncode = "TutorialsPoint?java";
      // Encode using basic encoder
      String base64encodedString = Base64.getEncoder().encodeToString(stringToEncode.getBytes("utf-8"));
      System.out.println("Encoded String: " + base64encodedString);

      // Decode the base64 encoded string using basic decoder
      byte[] base64decodedBytes = Base64.getDecoder().decode(base64encodedString);
      // print the decoded string		
      System.out.println("Decoded String: " + new String(base64decodedBytes, "utf-8"));
   }
}

输出

让我们编译并运行上面的程序,这将产生以下结果:

Encoded String: VHV0b3JpYWxzUG9pbnQ/amF2YQ==
Decoded String: TutorialsPoint?java

用于URL的Base64编码和解码

URL Base64编码器对提供的URL进行编码,使其对URL和文件名安全。此编码器使用A-Za-z0-9+/字符集中的字符。它使用URL和文件名安全类型的base64编码方案进行编码。以下是解释URL Base64编码器用法的代码片段。

String stringToEncode = "TutorialsPoint?java8";
// Encode using url encoder
String base64encodedString = Base64.getUrlEncoder().encodeToString(stringToEncode.getBytes("utf-8"));

URL Base64解码器通过拒绝除A-Za-z0-9+/以外的任何字符来解码Base64编码的字符串。它使用URL和文件名安全类型的base64编码方案进行解码。以下是解释Base64解码器用法的代码片段。

// Decode the base64 encoded string using basic decoder
byte[] base64decodedBytes = Base64.getUrlDecoder().decode(base64encodedString);
// print the decoded string		
System.out.println("Original String: " + new String(base64decodedBytes, "utf-8"));

示例:Java中用于URL的Base64编码和解码

以下示例展示了Base64 URL编码器和解码器的用法。我们首先使用Base64.getUrlEncoder()获取的编码器对简单的字符串进行编码,然后使用Base64.getUrlDecoder()方法获取的解码器对返回的编码字符串进行解码。

package com.tutorialspoint;

import java.io.UnsupportedEncodingException;
import java.util.Base64;

public class Base64Tester {
   public static void main(String[] args) throws UnsupportedEncodingException {
      String stringToEncode = "TutorialsPoint?java";
      // Encode using url encoder
      String base64encodedString = Base64.getUrlEncoder().encodeToString(stringToEncode.getBytes("utf-8"));
      System.out.println("Encoded String: " + base64encodedString);

      // Decode the base64 encoded string using url decoder
      byte[] base64decodedBytes = Base64.getUrlDecoder().decode(base64encodedString);
      // print the decoded string		
      System.out.println("Decoded String: " + new String(base64decodedBytes, "utf-8"));
   }
}

输出

让我们编译并运行上面的程序,这将产生以下结果:

Encoded String: VHV0b3JpYWxzUG9pbnQ_amF2YQ==
Decoded String: TutorialsPoint?java

用于MIME类型内容的Base64编码和解码

MIME Base64编码器将提供的字符串内容编码为MIME友好格式。输出以每行不超过76个字符表示,并使用回车符'\r'后跟换行符'\n'作为行分隔符。编码输出的末尾没有行分隔符。以下是解释MIME Base64编码器用法的代码片段。

String stringToEncode = "TutorialsPoint?java8";
// Encode using mime encoder
String base64encodedString = Base64.getMimeEncoder().encodeToString(stringToEncode.getBytes("utf-8"));

MIME Base64解码器通过拒绝除A-Za-z0-9+/以外的任何字符来解码Base64编码的字符串。它使用MIME类型的base64解码方案进行解码。以下是解释Base64解码器用法的代码片段。

// Decode the base64 encoded string using basic decoder
byte[] base64decodedBytes = Base64.getMIMEDecoder().decode(base64encodedString);
// print the decoded string		
System.out.println("Original String: " + new String(base64decodedBytes, "utf-8"));

示例:Java中的MIME Base64编码和解码

以下示例展示了Base64 MIME编码器和解码器的用法。我们首先使用Base64.getMIMEEncoder()获取的编码器对简单的字符串进行编码,然后使用Base64.getMIMEDecoder()方法获取的解码器对返回的编码字符串进行解码。

package com.tutorialspoint;

import java.io.UnsupportedEncodingException;
import java.util.Base64;
import java.util.UUID;

public class Base64Tester {
   public static void main(String[] args) throws UnsupportedEncodingException {
      StringBuilder stringBuilder = new StringBuilder();

      for (int i = 0; i < 10; ++i) {
         stringBuilder.append(UUID.randomUUID().toString());
         stringBuilder.append(",");
      }

      byte[] mimeBytes = stringBuilder.toString().getBytes("utf-8");
      String mimeEncodedString = Base64.getMimeEncoder().encodeToString(mimeBytes);
      System.out.println("Base64 Encoded String (MIME) : " + mimeEncodedString);

      // Decode the base64 encoded string using url decoder
      byte[] base64decodedBytes = Base64.getMimeDecoder().decode(mimeEncodedString);
      // print the decoded string		
      System.out.println("Decoded String: " + new String(base64decodedBytes, "utf-8"));
   }
}

输出

让我们编译并运行上面的程序,这将产生以下结果:

Base64 Encoded String (MIME) : NzRmNjkyODktYzJjZS00ZmU2LWEzYTUtMmFlMWRlMDQ1ZjU4LGQyNGQzMTU5LTVmOGUtNDZhMS04
NGRkLTBiMzNlNzc4ZjNiOCw2MmM1OTEzOS1kNmQwLTQ5MmQtYmUyMi01NmEzMTk5NmRkMTAsZDZh
NjBlNzctZjRjZi00Y2Q4LTk5MWEtYTY2ZDEzMzU4YjFjLGFlNDhkZmZjLTEwZjctNDk5OS05NTFj
LTU5ZGY1MjcyYjczNywxY2JiZjU0Ni0zNjc1LTQ4NzAtYTYxNC01MzkyODFkNjRjYmMsMTlhNTNi
ODEtODQ0OS00M2MyLTg4NmMtNDhmZThmZDZmN2E1LDQyNmRhZDE0LTEyNjItNGJhZC1hMWJlLTNm
ODc4MWE1YzhiMiw2NjEwMTgzZS03MGNkLTQzZTctOTRkNC0wZDgzZmY1MzhkNWYsOWMxNmMwM2Ut
ZWZmZS00Zjg2LWFkYzgtNjc3MThjYTVlYjI2LA==
Decoded String: 74f69289-c2ce-4fe6-a3a5-2ae1de045f58,d24d3159-5f8e-46a1-84dd-0b33e778f3b8,62c59139-d6d0-492d-be22-56a31996dd10,d6a60e77-f4cf-4cd8-991a-a66d13358b1c,ae48dffc-10f7-4999-951c-59df5272b737,1cbbf546-3675-4870-a614-539281d64cbc,19a53b81-8449-43c2-886c-48fe8fd6f7a5,426dad14-1262-4bad-a1be-3f8781a5c8b2,6610183e-70cd-43e7-94d4-0d83ff538d5f,9c16c03e-effe-4f86-adc8-67718ca5eb26,

Base64类的嵌套类

Base64类提供以下类。

序号 嵌套类和描述
1

static class Base64.Decoder

此类实现一个解码器,用于根据RFC 4648和RFC 2045中指定的Base64编码方案解码字节数据。

2

static class Base64.Encoder

此类实现一个编码器,用于根据RFC 4648和RFC 2045中指定的Base64编码方案编码字节数据。

Base64类方法

以下是Base64类提供的用于辅助Base64编码/解码的方法。

序号 方法名称和描述
1

static Base64.Decoder getDecoder()

返回一个使用基本类型base64编码方案解码的Base64.Decoder。

2

static Base64.Encoder getEncoder()

返回一个使用基本类型base64编码方案编码的Base64.Encoder。

3

static Base64.Decoder getMimeDecoder()

返回一个使用MIME类型base64解码方案解码的Base64.Decoder。

4

static Base64.Encoder getMimeEncoder()

返回一个使用MIME类型base64编码方案编码的Base64.Encoder。

5

static Base64.Encoder getMimeEncoder(int lineLength, byte[] lineSeparator)

返回一个使用指定行长和行分隔符的MIME类型base64编码方案编码的Base64.Encoder。

6

static Base64.Decoder getUrlDecoder()

返回一个使用URL和文件名安全类型base64编码方案解码的Base64.Decoder。

7

static Base64.Encoder getUrlEncoder()

返回一个使用URL和文件名安全类型base64编码方案编码的Base64.Encoder。

继承的方法

此类继承自以下类的方法:

  • java.lang.Object
广告