finereport报表url中传特殊字符

finereport报表url中传特殊字符


1.finereport官方文档( http://help.finereport.com/doc-view-936.html)
(1)按文档,使用finereport的js库
如果在需要进行cjkEncode的URI的参数中包含特殊字符,比如%,#,$,=,&,/,?,+,@等字符时,需要在cjkEncode之后,再次调用javascript的encodeURIComponent对这些特殊字符进行编码。如参数值是”%华%“这样的字符,就需要写成encodeURIComponent(FR.cjkEncode("%华%")),一定要先进行cjkEncode,然后再进行encodeURIComponent,完整代码如下:

<html>  
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
<script type="text/javascript"  src="/WebReport/ReportServer?op=emb&resource=finereport.js"></script>  
<Script Language="JavaScript">               
function frOpen() {     
window.location=FR.cjkEncode("http://localhost:8075/WebReport/ReportServer?reportlet=doc/Primary/Parameter/Parameter.cpt&地区=") +encodeURIComponent(FR.cjkEncode("%华%"));        
    }         
</Script>  
</head>  
<body>  
<input type="button" value="字符转换1" onclick="frOpen()">  
</body>  
</html>  

(2)实际在传参到数据库的时候+不能如上传入finereport
解决方法:
手动先将+转义为%2B,再使用finereport官方文档给出的方法即可。
如传入的参数为d+1,即使用encodeURIComponent(FR.cjkEncode(“d%2B1”))方法进行转换后,再进入url传参finereport就可以解析到d+1了。

2.我在项目中出现,UI组件datepicker无法使用,原因可能是引入了两个不同版本的js或者引用了两次相同版本的js,这里直接使用官方文档给出的方法

function cjkEncode(text) {       
    if (text == null) {       
        return "";       
    }       
    var newText = "";       
    for (var i = 0; i < text.length; i++) {       
        var code = text.charCodeAt (i);        
        if (code >= 128 || code == 91 || code == 93) {//91 is "[", 93 is "]".       
            newText += "[" + code.toString(16) + "]";       
        } else {       
            newText += text.charAt(i);       
        }       
    }       
    return newText;       
}  

调用该方法即可:如d+1:encodeURIComponent(cjkEncode(“d%2B1”))

3.查看帮助文档发现更 简单的方法(http://help.finereport.com/doc-view-1136.html)
在URL中,“+”的编码为%2B,除了跟“%”的编码%25拼接到一起的时候能正常显示外,其它拼接都默认显示为空格,要想正常显示,需将“+”的编码改为%252B才可以。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值