参数中带有&字符

来源:互联网 发布:天猫交易额实时数据 编辑:程序博客网 时间:2024/04/29 01:29

另外,encodeURI/encodeURIComponent是在javascript1.5之后引进的,escape则在javascript1.0版本就有。
1、  传递参数时需要使用encodeURIComponent,这样组合的url才不会被#等特殊字符截断。

   例如:<script language="javascript">document.write('<a href="http://passport.baidu.com/?logout&aid=7&u='+encodeURIComponent("http://cang.baidu.com/bruce42")+'">退出</a>');</script>

2、  进行url跳转时可以整体使用encodeURI

例如:Location.href=encodeURI("http://cang.baidu.com/do/s?word=百度&ct=21");

3、  js使用数据时可以使用escape

例如:搜藏中history纪录。

4、  escape对0-255以外的unicode值进行编码时输出%u****格式,其它情况下escape,encodeURI,encodeURIComponent编码结果相同。


最多使用的应为encodeURIComponent,它是将中文、韩文等特殊字符转换成utf-8格式的url编码,所以如果给后台传递参数需要使用encodeURIComponent时需要后台解码对utf-8支持(form中的编码方式和当前页面编码方式相同)

escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z

encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z

encodeURIComponent不编码字符有71个:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/hzfu007/archive/2008/12/20/3565226.aspx

1: 案例:现有一个页面,其地址为“a.jsp?id=1&pid=2”,现在想将这个页面地址传递到另一个页面b,即点击a页面中的超链接将地址传递过去,如果直接传递,采用地址为“b.jsp?url=a.jsp?id=1&pid=2”的话,实际得到的url并不是想要的结果,而是“a.jsp?id=1”,因为在传递的参数中包含&字符,我们需要将&字符进行一下特殊处理,可以用replace方法对url中的&进行替换,替换成对应的ASCII码(%26),这样就OK了。

url=url.replace("&","%26");

然后在b的页面中采用String url=request.getParameter("url");得到的url就是想要的url了

 

 

2: 请把 "329ckc&323494=0349 "
用urlencode处理一下然后再输出。
例如:
echo   'http://www.xxxxx.com/index.php?from= '.urlencode( '329ckc&323494=0349 ');

 

3:

url出现了有+,空格,/,?,%,#,&,=等特殊符号的时候,可能在服务器端无法获得正确的参数值,如何是好?
解决办法
将这些字符转化成服务器可以识别的字符,对应关系如下:
URL字符转义

用其它字符替代吧,或用全角的。

+    URL 中+号表示空格                                 %2B  
空格 URL中的空格可以用+号或者编码           %20
/   分隔目录和子目录                                     %2F    
?    分隔实际的URL和参数                             %3F    
%    指定特殊字符                                          %25    
#    表示书签                                                  %23    
&    URL 中指定的参数间的分隔符                  %26    
=    URL 中指定参数的值                                %3D

困扰很长时间的问题终于解决了:  参数中含有特殊字符的处理。  例如"#" 在url中表示结束符号。  java和js中处理   str="集团2#终端";  str=str.replace("#","%23");  str=str.replace("%","%25");  str=str.replace("&","%26");  str=str.replace("+","%2B");  str=str.replace("/","%2F");  str=str.replace("=","%3D");  str=str.replace("?","%3F");


ok,问题解决。。

 

4:

JavaScript中escape函数是对 String 对象编码以便它们能在所有计算机上可读,使用方法:

escape(charString)

charstring是必选项,参数是要编码的任意 String 对象或文字。

escape 方法返回一个包含了 charstring 内容的字符串值( Unicode 格式)。所有空格、标点、重音符号以及其他非 ASCII 字符都用 %xx 编码代替,其中 xx 等于表示该字符的十六进制数。例如,空格返回的是 "%20" 。字符值大于 255 的以 %uxxxx 格式存储。

注意   escape 方法不能够用来对统一资源标示码 (URI) 进行编码。对其编码应使用 encodeURI 和encodeURIComponent 方法。

 

 

 

 

 

原创粉丝点击