java处理url中的特殊字符%等

时间:2022-11-02 20:06:57


URL(Uniform Resoure Locator,统一资源定位器)是Internet中对资源进行统一定位和管理的标志。
一个完整的URL包括如下内容:
1.         应用协议名称,包括http,ftp,file等标志
2.         资源定位,是由(.)分割等网络路径
3.         端口号,按照规定,http应用端口是80,telnet协议应用端口是23。
4.         服务器中的文件路径
5.         文件中的编码位置
一个完整的URL如下:
http://192.168.1.116:8080/page/ProtalJsp.action?id=3
 URL无法显示某些特殊符号,这个时候就要使用编码了。编码的格式为:一个百分号,后面跟对应字符的ASCII(16进制)码值。例如 空格的编码值是"%20"。(ASCII参考)
有些字符在URL中具有特殊含义,基本编码规则如下:
特殊含义                                                            十六进制值 
1.+ 表示空格(在 URL 中不能使用空格)           %20 
2./ 分隔目录和子目录                                     %2F 
3.? 分隔实际的 URL 和参数                             %3F 
4.% 指定特殊字符                                         %25 
5.# 表示书签                                               %23 
6.& URL 中指定的参数间的分隔符                     %26 

7.= 等于号                                                  %3D
java中URL 的编码和解码函数
java.net.URLEncoder.encode(String s)和java.net.URLDecoder.decode(String s);
在javascript 中URL 的编码和解码函数
escape(String s)和unescape(String s) ;

  String strTest = "?=abc?中%1&2<3,4>";
strTest = URLEncoder.encode(strTest, "UTF-8");
System.out.println(strTest);
strTest = URLDecoder.decode(strTest,"UTF-8");
System.out.println(strTest);


执行结果:

%3F%3Dabc%3F%E4%B8%AD%251%262%3C3%2C4%3E
?=abc?中%1&2<3,4>