使用Java预定义java.net.URLEncoder和java.net.URLDecoder用于URL转码和解码。
一、URL编码
URL编码常用于查询字符串或表单参数,将字符数据编码为可在URL中安全传输的格式。
import java.io.UnsupportedEncodingException; import java.net.URLEncoder; public class Main { public static void main(String[] args) { String url = "http://example.com/query?q="; String query = "Java URL Encoding"; try { String encodedQuery = URLEncoder.encode(query, "UTF-8"); System.out.println("Encoded URL : " + url + encodedQuery); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } }
使用URLEncoder.encode()URL编码方法,第一个参数是需要编码的字符串,第二个参数是字符集。
二、URL解码
URL解码是URL编码的逆向过程,用来将URL编码后的字符串还原为原始字符串。
import java.io.UnsupportedEncodingException; import java.net.URLDecoder; public class Main { public static void main(String[] args) { String url = "http%3A%2F%2Fexample.com%2Fquery%3Fq%3DJava+URL+Encoding"; try { String decodedURL = URLDecoder.decode(url, "UTF-8"); System.out.println("Decoded URL : " + decodedURL); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } }
使用URLDecoder.decode()URL解码方法,第一个参数是需要解码的字符串,第二个参数是字符集。
三、注意事项
1、URL编码只能用于URL查询字符串部分,在其它部分,如路径部分,可能会导致错误。
2、在编码过程中,字符集必须与解码过程中的字符集一致,否则可能无法正确解码。
3、当使用URLEncoder和URLDecoder时,如果没有try...catch...,那会被抛出UnsupportedEncodingException的错误。