简单实例处理url特殊符号处理(2种⽅法)
我遇到的问题是:url⾥的参数内容包含&符合,我有两种⽅法解决
,例⼦如下(前端处理)
复制代码代码如下:
<a href="#" onclick="test('${pe}','${group }')">${group })</a>
<script language="javascript">
function test(a,b){
alert("test");
location.href='groupsDetailServlet?groupTypeForDetail=' + a + '&cn=' + encodeURIComponent(b);
}
</script>
1>jsp:
复制代码代码如下:
<a href="groupsDetailServlet?cn=${dedCN }&groupTypeForDetail=${GroupType}"+>${group }</a>
2>java bean: group
复制代码代码如下:
String cn;//要显⽰的CN
String encodedCN;//当参数传的CN
public Group(String cn) { this(); this = cn; dedCN =deURLStr(cn); }
public void setCn (String name) { this = name; deURLStr(cn)); }
public String getCn () { return cn; }
public String getEncodedCN () { return encodedCN; }
public void setEncodedCN (String cn) { dedCN = cn; }
3>调⽤类⾥处理解码:
复制代码代码如下:
String cn = LdapUtil.decodeURLStr(encodedCN);
4>LdapUtil.java
复制代码代码如下:
public static String encodeURLStr(String src)
{
return src != null && im().length() > 0 ? placeAll("&", "@") : "";
}
public static String decodeURLStr(String src)
{
return src != null && im().length() > 0 ? placeAll("@", "&") : "";
}
--------------------------------------以下是-----⽹络搜索资料分享---------------------------------------
在使⽤url进⾏参数传递时,经常会传递⼀些中⽂名(或含有特殊字符)的参数或URL地址,在后台处理时会发⽣转换错误。在有些传递页⾯使⽤GB2312,⽽在接收页⾯使⽤UTF8,这样接收到的参数就可能会与原来发⽣不⼀致。使⽤服务器端的urlEncode函数编码的URL,与使⽤客户端javascript的encodeURI函数编码的URL,结果就不⼀样。javascript对⽂字进⾏编码涉及3 个函数: escape,encodeURI,encodeURIComponent,相应 3 个解码函数:
unescape,decodeURI,decodeURIComponent
:
escape () ⽅法:采⽤ISO Latin字符集对指定的字符串进⾏编码。所有的空格符、标点符号、特殊字符以及其他⾮ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表⾥⾯的编码的16进
制数字)。⽐如,空格符对应的编码是%20。unescape⽅法与此相反。不会被此⽅法编码的字符: @ * / +
encodeURI ()⽅法:把URI字符串采⽤UTF-8编码格式转化成escape格式的字符串。不会被此⽅法编码的字符:! @ # $& * ( ) = : / ; ? + '
encodeURIComponent ()⽅法:把URI字符串采⽤UTF-8编码格式转化成escape格式的字符串。与encodeURI()相⽐,这个⽅法将对更多的字符进⾏编码,⽐如 / 等字符。所以如果字符串⾥⾯包含了URI的⼏个部分的话,不能⽤这个⽅法来进⾏编码,否则 / 字符被编码之后URL将显⽰错误。不会被此⽅法编码的字符:! * ( )
因此,对于中⽂字符串来说,如果不希望把字符串编码格式转化成UTF-8格式的(⽐如原页⾯和⽬标页⾯的charset是⼀致的时候),只需要使⽤escape。如果你的页⾯是GB2312或者其他的编码,⽽接受参数的页⾯是 UTF-8编码的,就要采⽤encodeURI或者encodeURIComponent。
另外,encodeURI/encodeURIComponent是在javascript1.5之后引进的,escape则在javascript1.0版本就有。
1、传递参数时需要使⽤ encodeURIComponent,这样组合的 url 才不会被 # 等特殊字符截断。例如:<script
在线url网址编码解码
language="javascript">document.write('<a href="passport.baidu/?logout&aid=7&u='+encodeURIComponent ("cang.baidu/bruce42")+'">退出 </a>');</script>
2、进⾏ url跳转时可以整体使⽤ encodeURI。例如:Location.href=encodeURI ("cang.baidu/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
以下是url中可能⽤到的特殊字符及在url中的经过编码后的值:(略)
项⽬中发现,直接对url中的参数部分做encodeURI() 编码转换,后台servlet通过getParamater()获取时,不需要转换可以直接获取到正确的值。说明:参数没有⽤到中⽂,框架⽤的是struts框架
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论