📜  在Java中使用 Base64 进行 URL 编码/解码

📅  最后修改于: 2022-05-13 01:55:44.920000             🧑  作者: Mango

在Java中使用 Base64 进行 URL 编码/解码

Base 64 是一种将二进制数据转换为文本格式的编码方案,以便编码的文本数据可以轻松地通过网络传输而不会损坏且不会丢失任何数据。(Base 64 格式参考)。

URL 编码与基本编码相同,唯一的区别是它对 URL 和文件名安全的 Base64 字母进行编码或解码,并且不添加任何行分隔符。

网址编码

String encodedURL = Base64.getUrlEncoder()
                       .encodeToString(actualURL_String.getBytes());

说明:在上面的代码中,我们使用 getUrlEncoder() 调用 Base64.Encoder,然后通过在 encodeToString() 方法中传递实际 URL 的字节值作为参数来获取编码的 URLstring。

URL解码

byte[] decodedURLBytes = Base64.getUrlDecoder().decode(encodedURLString);

String actualURL= new String(decodedURLBytes);

说明:在上面的代码中,我们使用 getUrlDecoder() 调用 Base64.Decoder,然后将 decode() 方法中传递的 URL字符串作为参数解码,然后将返回值转换为实际 URL。

下面的程序说明了Java中的编码和解码 URL:

方案 1:使用 Base64 类的 URL 编码。

// Java program to demonstrate
// URL encoding using Base64 class
  
import java.util.*;
public class GFG {
    public static void main(String[] args)
    {
        // create a sample url String to encode
        String sampleURL = "https:// www.geeksforgeeks.org/";
  
        // print actual URL String
        System.out.println("Sample URL:\n"
                           + sampleURL);
  
        // Encode into Base64 URL format
        String encodedURL = Base64.getUrlEncoder()
                                .encodeToString(sampleURL.getBytes());
  
        // print encoded URL
        System.out.println("encoded URL:\n"
                           + encodedURL);
    }
}
输出:
Sample URL:
https://www.geeksforgeeks.org/
encoded URL:
aHR0cHM6Ly93d3cuZ2Vla3Nmb3JnZWVrcy5vcmcv

方案二:使用 Base64 类进行 URL 解码。

// Java program to demonstrate
// Decoding Basic Base 64 format to String
  
import java.util.*;
public class GFG {
    public static void main(String[] args)
    {
        // create a encoded URL to decode
        String encoded = "aHR0cHM6Ly93d3cuZ2Vla3Nmb3JnZWVrcy5vcmcv";
  
        // print encoded URL
        System.out.println("encoded URL:\n"
                           + encoded);
  
        // decode into String URL from encoded format
        byte[] actualByte = Base64.getUrlDecoder()
                                .decode(encoded);
  
        String actualURLString = new String(actualByte);
  
        // print actual String
        System.out.println("actual String:\n"
                           + actualURLString);
    }
}
输出:
encoded URL:
aHR0cHM6Ly93d3cuZ2Vla3Nmb3JnZWVrcy5vcmcv
actual String:
https://www.geeksforgeeks.org/

参考:

  • https://docs.oracle.com/javase/10/docs/api/java Java
  • https://www.geeksforgeeks.org/decode-encoded-base-64-string-ascii-string/
  • https://www.geeksforgeeks.org/encode-ascii-string-base-64-format/