关于JSP页面中URl传递参数中特殊字符的处理
网银转账电子回单打印中将用户交易的所有信息展示出来:
如用于回单打印的链接
οnclick="newkk1('ejnrcb.PrintContent.do?
HostJnlNo=
&PayerAcName=
&PayeeAcName=
&PayerAcNo=
&PayeeAcNo=
&Amount=
&TransDate=
&Remark=
&Fee=
&TransState=')">
若用户输入的Remark中携带特殊字符如#,&,/,等时会出现回单中显示异常的问题。
比如:#会直接出现内部错误。
解决方法:function newkk1(url)
{
//showx = event.screenX/4 ; // + deltaX;
//showy = event.screenY/4; // + deltaY;
if(url==null)
return;
url=encodeURI(url);
url=encodeURI(url);
url=replaceAll(url,”#”,”%23”);//替换#
var i=url.indexOf(“Remark=”);
var o=url.indexOf(“&Fee=”);
var remarkLeftString=url.substring(0,i);
var remakeString=url.substring(i,o);
var remarkReightString=url.substring(o,url.length);
remakeString=replaceAll(remakeString,”
remakeString=replaceAll(remakeString,”>”,”%3E”);//替换>
remakeString=replaceAll(remakeString,”"”,”%22”);//替换”
remakeString=replaceAll(remakeString,”&”,”%26”);//替换&
remakeString=replaceAll(remakeString,”/”,”%2F”);//替换/
if(remakeString.indexOf(“amp;”)!=-1){
remakeString=replaceAll(remakeString,”amp;”,”“);
}
url=remarkLeftString+remakeString+remarkReightString;
// retval = window.showModalDialog(url,window, “dialogWidth:650px; dialogHeight:400px; dialogLeft:”+showx+”px; dialogTop:”+showy+”px; status:no; directories:yes;scrollbars:no;Resizable:no;location:no;menubar:no;toolbar:no;” );
retval=window.open(url,”“, “Width=650; Height=400;” );
return retval;
}
/**
* 用于处理URL中特殊字符
字符串部分内容替换。
* oldString-原字符串
* replaceStr-被替换字符串
* newReplaceStr-新的替换字符串
*/
function replaceAll(oldString,replaceStr,newReplaceStr){
var regrex=new RegExp(replaceStr,”g”);
var newValue=oldString.replace(regrex,newReplaceStr);
return newValue;
}
以上特殊字符的替换可以整合为一个方法一起解决,但为了能清每个字符是怎样转义和还原的,所以一个一个进行替换还原,避免出错。常见的字符转义及其编码可以在网上进行搜索。