Java对URL进行编码和解码的两种方法

1.使用java.net.URLEncoder和java.net.URLDecoder类

public class UrlEncoder {

    public static void main(String[] args) {
        try {
            String url = "https://www.baidu.com/sugrec?&prod=pc_his&from=pc_web&_t=1680167620430&req=2&csor=0";
            String encodedUrl = java.net.URLEncoder.encode(url, "UTF-8");
            System.out.println("加密后:" + encodedUrl);
            String decodedUrl = java.net.URLDecoder.decode(encodedUrl, "UTF-8");
            System.out.println("解密后:" + decodedUrl);
            /**
             * 输出:
             * 加密后:https%3A%2F%2Fwww.baidu.com%2Fsugrec%3F%26prod%3Dpc_his%26from%3Dpc_web%26_t%3D1680167620430%26req%3D2%26csor%3D0
             * 解密后:https://www.baidu.com/sugrec?&prod=pc_his&from=pc_web&_t=1680167620430&req=2&csor=0
             */
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

}

上述代码中,使用URLEncoder.encode方法将URL进行编码,指定编码方式为UTF-8,生成编码后的URL字符串。使用URLDecoder.decode方法将编码后的URL字符串进行解码,指定解码方式为UTF-8,生成解码后的URL字符串。

2.使用java.nio.charset.StandardCharsets和java.util.Base64类

import java.nio.charset.StandardCharsets;
import java.util.Base64;

public class UrlEncoder {

    public static void main(String[] args) {
        try {
            String url = "https://www.baidu.com/sugrec?&prod=pc_his&from=pc_web&_t=1680167620430&req=2&csor=0";
            String encodedUrl = Base64.getEncoder().encodeToString(url.getBytes(StandardCharsets.UTF_8));
            System.out.println("加密后:" + encodedUrl);
            String decodedUrl = new String(Base64.getDecoder().decode(encodedUrl), StandardCharsets.UTF_8);
            System.out.println("解密后:" + decodedUrl);
            /**
             * 输出:
             * 加密后:aHR0cHM6Ly93d3cuYmFpZHUuY29tL3N1Z3JlYz8mcHJvZD1wY19oaXMmZnJvbT1wY193ZWImX3Q9MTY4MDE2NzYyMDQzMCZyZXE9MiZjc29yPTA=
             * 解密后:https://www.baidu.com/sugrec?&prod=pc_his&from=pc_web&_t=1680167620430&req=2&csor=0
             */
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

}

上述代码中,使用Base64.getEncoder().encodeToString方法将URL字符串转换为UTF-8编码的字节数组,并进行Base64编码。使用new String(Base64.getDecoder().decode(encodedUrl), StandardCharsets.UTF_8)方法将编码后的URL字符串进行解码,生成解码后的URL字符串。

需要注意的是,对URL进行编码和解码时需要指定字符集,常用的字符集包括UTF-8、ISO-8859-1等。在使用URL进行网络传输时,一般建议使用UTF-8编码。

你可能感兴趣的:(java,jvm,开发语言)