简单实例处理url特殊符号&处理(2种方法)

我遇到的问题是:url里的参数内容包含&符合,我有两种方法解决
其一方法是:在页面用JS转码,例子如下(前端处理)

复制代码 代码如下:

<a href=#><script language="javascript">
function test(a,b){
alert("test");
location.href=#>}
</script>

其二方法是:在后端处理
1>jsp:
复制代码 代码如下:

<a href=#>

2>java bean: group
复制代码 代码如下:

String cn;//要显示的CN
String encodedCN;//当参数传的CN
public Group(String cn) { this(); this.cn = cn; this.encodedCN =LdapUtil.encodeURLStr(cn); }
public void setCn (String name) { this.cn = name; setEncodedCN(LdapUtil.encodeURLStr(cn)); }
public String getCn () { return cn; }
public String getEncodedCN () { return encodedCN; }
public void setEncodedCN (String cn) { this.encodedCN = cn; }

3>调用类里处理解码:
复制代码 代码如下:

String cn = LdapUtil.decodeURLStr(encodedCN);

4>LdapUtil.java
复制代码 代码如下:

public static String encodeURLStr(String src)
{
return src != null && src.trim().length() > 0 ? src.replaceAll("&", "@") : "";
}
public static String decodeURLStr(String src)
{
return src != null && src.trim().length() > 0 ? src.replaceAll("@", "&") : "";
}

--------------------------------------以下是-----网络搜索资料分享---------------------------------------
在使用url进行参数传递时,经常会传递一些中文名(或含有特殊字符)的参数或URL地址,在后台处理时会发生转换错误。在有些传递页面使用GB2312,而在接收页面使用UTF8,这样接收到的参数就可能会与原来发生不一致。使用服务器端的 urlEncode函数编码的URL,与使用客户端javascript的encodeURI函数编码的URL,结果就不一样。javascript对文字进行编码涉及3 个函数: escape,encodeURI,encodeURIComponent,相应 3 个解码函数: unescape,decodeURI,decodeURIComponent

javaScript中的编码方法
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 language="javascript">document.write('<a href=#>2、 进行 url跳转时可以整体使用 encodeURI。 例如:Location.href=#>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框架

本页内容版权归属为原作者,如有侵犯您的权益,请通知我们删除。
复制代码 代码如下: /*7536-7646*/ animate: function( prop, speed, easing, callback ) { if ( jQuery.isEmptyObject( prop ) ) { return this.each( optall.complete ); } //#7864行this.options.complete.call( this.elem )使得其可以不断的连续执行动画,比如$(‘selector').animate({prop1},speed1
废话不多说,直接奉上代码 JS script type="text/javascript"function Sum(arg1,arg2){ //数值加法函数var sarg1 = new String(arg1); //将传入的参数转为字符串以便进行参数检查var sarg2 = new String(arg2); //将参数2转为字符类型if( (sarg1=="")||(sarg2=="") ) //确保参数不为空{var e0 = new Error(); //当有参数为空则抛出异常e0.Seria
本文实例讲述了基于jQuery实现的旋转彩圈。分享给大家供大家参考。具体实现方法如下: !DOCTYPE htmlhtmlheadscript src="jquery-1.7.1.min.js"/scriptscriptfor(var i=0;i100000;i++){if(i%4==0)setTimeout("$('#div1').css({'border-left':'40px solid red','border-bottom':'40px solid green','border-right':'
当今 JavaScript 大行其道,各种应用对其依赖日深。web 程序员已逐渐习惯使用各种优秀的 JavaScript 框架快速开发 Web 应用,从而忽略了对原生 JavaScript 的学习和深入理解。所以,经常出现的情况是,很多做了多年 JS 开发的程序员对闭包、函数式编程、原型总是说不清道不明,即使使用了框架,其代码组织也非常糟糕。这都是对原生 JavaScript 语言特性理解不够的表现。要掌握好 JavaScript,首先一点是必须摒弃一些其他高级语言如 Java、C# 等类式面向对象思维的
具体如何屏蔽更多的快捷键可以自行google搜索。 这里要说的是如何屏蔽后去执行自定义的事件。 这里为了方便使用的Kibo做例子,使用google搜索出来的结果一般都是javascript原生实现,很简单的,这里不做介绍。 这里是实现了在一个textarea中enter进行保存的例子,屏蔽掉了原来的回车事件。 代码如下: 复制代码 代码如下: //键盘监听 var areaKey = new Kibo($("#aac010")[0]); areaKey.down('enter',doSave); funct
在这之前我们比较值使用两等号 “==” 或 三等号“===”, 三等号更加严格,只要比较两方类型不同立即返回false。 另外,有且只有一个值不和自己相等,它是NaN 现在ES6又加了一个Object.is,让比较运算的江湖更加混乱。多数情况下Object.is等价于“===”,如下 1 === 1 // trueObject.is(1, 1) // true 'a' === 'a' // trueObject.is('a', 'a') // true true === true // trueObjec
复制代码 代码如下: ?php /* ?xml version="1.0" encoding="utf-8"? article item title name="t1"/title contentcontent1/content pubdate2009-10-11/pubdate /item item title name="t2"title2/title contentcontent2/content pubdate2009-11-11/pubdate /item /article */ /* 使用DO
本文实例讲述了JS+CSS实现模仿浏览器网页字符查找功能的方法。分享给大家供大家参考。具体实现方法如下: 复制代码 代码如下: html head titleJS+CSS模仿的网页字符查找功能/title style type=text/css BODY { FONT-SIZE: 12px; LETTER-SPACING: 1pt; LINE-HEIGHT: 22px; MARGIN-LEFT: 5pt; MARGIN-TOP: 5pt } #scontentmain { HEIGHT: 30px; PO
复制代码 代码如下: !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" html xmlns="http://www.w3.org/1999/xhtml" head meta http-equiv="Content-Type" content="text/html; charset=utf-8" / titlecrea
JavaScript数组的splice()方法改变数组的内容,增加了新的元素,同时消除旧元素。 语法 array.splice(index, howMany, [element1][, ..., elementN]); 下面是参数的详细信息: index : 在该索引开始改变的数组。 howMany : 整数,表示旧数组元素数去除。如果的howmany为0,没有元素被删除。 element1, ..., elementN : 元素添加到数组。如果不指定任何元素,拼接只需删除该数组中的元素。 返回值: 返回