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
廣告