url特殊字符转义及解决方法

转载 2013年12月03日 22:03:11
  1. URL特殊字符需转义   
  2.  
  3. 1、空格换成加号(+)   
  4. 2、正斜杠(/)分隔目录和子目录   
  5. 3、问号(?)分隔URL和查询   
  6. 4、百分号(%)制定特殊字符   
  7. 5、#号指定书签   
  8. 6、&号分隔参数  


转义字符的原因: 

如果你的表单使用get方法提交,并且提交的参数中有“&”等特殊符的话,如果不做处理,在service端就会将&后面的作为另外一个参数来看待。例如 
表单的action为list.jsf?act=go&state=5 
则提交时通过request.getParameter可以分别取得act和state的值。 
如果你的本意是act='go&state=5'这个字符串,那么为了在服务端拿到act的准确值,你必须对&进行转义 

url转义字符原理: 

将这些特殊的字符转换成ASCII码,格式为:%加字符的ASCII码,即一个百分号%,后面跟对应字符的ASCII(16进制)码值。例如 空格的编码值是"%20"。 
 

  1. URL特殊符号及对应的十六进制值编码:   
  2.  
  3. 1. +  URL 中+号表示空格 %2B   
  4. 2. 空格 URL中的空格可以用+号或者编码 %20   
  5. 3. /  分隔目录和子目录 %2F    
  6. 4. ?  分隔实际的 URL 和参数 %3F    
  7. 5. % 指定特殊字符 %25    
  8. 6. # 表示书签 %23    
  9. 7. & URL 中指定的参数间的分隔符 %26    
  10. 8. = URL 中指定参数的值 %3D  

解决方法如下(以+号为例):

方法一、修改客户端,将客户端带“+”的参数中的“+”全部替换为‍“2B%”,这样参数传到服务器端时就能得到“+”了。

方法二、修改服务器端,将空格替换为“+”,这种方式只适用于参数中有‍“+”没有空格的情况。

例子:

  1. String a = reuqest.‍getParameter("clientStr")‍.replace(' ','+'); 

如果客户端为clientStr=test+OK,那么a的值为test+OK;

 

方法三、修改服务器端,将获取参数的方法由‍reuqest.‍getParameter改为‍request.getQueryString().substring(0),然后对得到的字符串进行解析。

例子:

  1. ‍‍String a =request.getQueryString().substring(0); 

‍如果客户端为clientStr=test+OK,那么a的值为‍clientStr=test+OK,需要再解析一下,

a=a.‍substring(10);得到a的值为‍test+OK。

 

附:一个JS,用来转义URL中特殊字符的。

 

  1. ‍function URLencode(sStr)   
  2. {  
  3.     return escape(sStr).replace(/\+/g, '%2B').replace(/\"/g,'%22').replace(/\'/g, '%27').replace(/\//g,'%2F');  

url特殊字符转义及解决方法(附有例子)

做页面开发的时候有时候,会使用Javascript的escape(),encodeURIComponent(),encodeURI ()这三个函数进行URL编码,防止特殊字符接收不到。解决方法:就是把...
  • u013412790
  • u013412790
  • 2016年05月18日 10:41
  • 20185

url特殊字符转义及解决方法

URL特殊字符需转义 1、空格换成加号(+) 2、正斜杠(/)分隔目录和子目录 3、问号(?)分隔URL和查询 4、百分号(%)制定特殊字符 5、#号指定书签 6、&号分隔参数 转义字...
  • u013412790
  • u013412790
  • 2016年05月17日 09:53
  • 2754

http url转义字符,特殊字符

空格 - %20 " - %22 # - %23 % - %25 & - %26 ( - %28 ) - %29 + - %2B , - %2C / - %2F : - %3A ...
  • ios_xumin
  • ios_xumin
  • 2016年02月18日 14:31
  • 4848

url特殊字符转义及解决方法

URL特殊字符需转义    1、空格换成加号(+)   2、正斜杠(/)分隔目录和子目录   3、问号(?)分隔URL和查询   4、百分号(%)制定特殊字符   5、#号指定书签   6、&号分隔参...
  • zljjava
  • zljjava
  • 2014年08月04日 20:19
  • 61635

url特殊字符转义及解决方法

标签:url 特殊字符 URL特殊字符需转义    1、空格换成加号(+)   2、正斜杠(/)分隔目录和子目录   3、问号(?)分隔URL和查询   4、百分号(%)制定特殊字符  ...
  • wj261140102
  • wj261140102
  • 2011年09月01日 14:46
  • 1673

url特殊字符转义及解决方法

URL特殊字符需转义    1、空格换成加号(+)   2、正斜杠(/)分隔目录和子目录   3、问号(?)分隔URL和查询   4、百分号(%)制定特殊字符   5、#号指定书签   6、&号分隔参...
  • qq_16605855
  • qq_16605855
  • 2017年06月08日 09:13
  • 228

url 特殊字符 传递参数解决方法

带“+”号的参数值通过url传递,后台取不到正确值 问题是这样的: 旧源代码: javascript: var url = "/quality/qualityStandard.do?metho...
  • shanliangliuxing
  • shanliangliuxing
  • 2011年08月23日 16:45
  • 1093

url 传递参数(特殊字符)解决方法

首先设置 apache 配置文件, server.xml 在 port=8080 那一行中加上 URIEcoding=GBK 有些符号在URL中是不能直接传递的,如果要在URL中传递这些特...
  • hejisan
  • hejisan
  • 2016年06月30日 00:47
  • 14144

JavaScript中url 传递参数(特殊字符)解决方法

有些符号在URL中是不能直接传递的,如果要在URL中传递这些特殊符号,那么就要使用他们的编码了。下表中列出了一些URL特殊符号及编码   十六进制值  1. + URL 中+号表示空格 %...
  • lililiyunqiang
  • lililiyunqiang
  • 2014年01月04日 10:52
  • 878

url 特殊字符 传递参数解决方法

解决的方法: replace() 方法如果直接用str.replace("-","!") 只会替换第一个匹配的字符. 而str.replace(/\-/g,"!")则可以替换掉全部匹配的字符(g为...
  • hsany330
  • hsany330
  • 2014年10月21日 16:04
  • 347
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:url特殊字符转义及解决方法
举报原因:
原因补充:

(最多只允许输入30个字)