Web报表页面如何传递中文参数

原创 2015年08月18日 09:52:46


1、场景描述

在用报表开发工具FineReport设计的web报表中,给iframe设置src嵌入某个报表时,往往会给报表传递初始的参数值,例如:

<iframe id="reportFrame" width="900" height="400" src="/WebReport/ReportServer?reportlet=/report.cpt&参数1=参数值&参数2=参数值..."></iframe>  

若参数名称、参数值甚至报表名称中包含中文或者特殊字符时,如果不进行编码转换,可能会出现一系列问题。比如下图:



 

今天我就来讲讲该如何如何传递中文参数。

2、使用cjkEncode对中文进行编码转换

使用cjkEncode对调用报表的路径或参数进行编码,报表获取到参数后会自动进行解码,保证不会出现乱码等一系列情况。

cjkEncode是FR内部封装好的编码方法,在js中使用cjkEncode有两种方式,该节我们举例介绍。

2.1加载finereport.js使用cjkEncode

cjkEncode方法在FineReport的JS库中已经预先提供了,用户可以在自己的网页中引入FineReport的JS库,就可以使用FR.cjkEncode对中日韩文字符进行编码,如下对调用报表的url进行cjkEncode:

1.      <html>    

2.        <head>    

3.        <title>FineReport Demo</title>    

4.        <meta http-equiv="Content-Type" content="text/html; charset=GBK" />    

5.        <script type="text/javascript" src="/WebReport/ReportServer?op=emb&resource=finereport.js"></script>  

6.        <script language="javascript">  

7.          function autoLoad(){  

8.            var addr = FR.cjkEncode("/WebReport/ReportServer?reportlet=/doc/Primary/Parameter/Parameter.cpt&地区=华东");  

9.            document.getElementById("reportFrame").src = addr;  

10.      }  

11.      window.onload = autoLoad;   

12.    </script>  

13.    </head>    

14.    <body>    

15.      <iframe id="reportFrame" width="900" height="400" ></iframe>    

16.    </body>  

17.  </html>  

finereport.js使用的是jquery框架,若用户也使用了jquery,可能会造成冲突,这时建议不要引入finereport.js,而是将cjkEncode方法拷贝到页面中直接使用,详见下面的方法。

已完成示例请参照%FR_HOME%\WebReport|page_demo\parameter_ch.html

2.2直接调用cjkEncode

加载finereport.js再引用cjkEncode,一方面可能会引起js冲突,另一方面也加载了很多不必要的方法。

若用户只需要使用该方法,可以将cjkEncode实现的代码复制到网页中或者用户自己的js文件中,然后再引用cjkEncode。

1.     <html>  

2.       <head>    

3.       <title>FineReport Demo</title>    

4.       <meta http-equiv="Content-Type" content="text/html; charset=GBK" />    

5.       <script type="text/javascript">  

6.         //cjkEncode方法的实现代码,放在网页head中或者用户自己的js文件中  

7.         function cjkEncode(text) {                                                                            

8.           if (text == null) {         

9.             return "";         

10.        }         

11.        var newText = "";         

12.        for (var i = 0; i < text.length; i++) {         

13.          var code = text.charCodeAt (i);          

14.          if (code >= 128 || code == 91 || code == 93) {  //91 is "[", 93 is "]".         

15.            newText += "[" + code.toString(16) + "]";         

16.          } else {         

17.            newText += text.charAt(i);         

18.          }         

19.        }         

20.        return newText;         

21.      }     

 





版权声明:本文为博主原创文章,未经博主允许不得转载。

帆软报表有汉字参数的乱码cjkencode c#版

1如下图乱码: 2.解决方案一 描述:帆软参数编码有自己的编码规则,具体如下javascript函数 function cjkEncode(text) { if (text == nul...
  • wjxheng
  • wjxheng
  • 2017年11月20日 16:51
  • 171

关于JAVA中URL传递中文参数,取值是乱码的解决办法

简单的方式(2.在后台通过解码来接收该中文参数 ) : 在url里面的中文不受你上面设置的编码的限制,它是unicode格式传输的,跟服务器的编码相关,如果你把服务器的编码设置为utf-8或者gb...
  • q1054261752
  • q1054261752
  • 2016年09月06日 21:35
  • 5591

Web报表页面如何传递中文参数

在用报表开发工具FineReport设计的web报表中,给iframe设置src嵌入某个报表时,往往会给报表传递初始的参数值,若参数名称、参数值甚至报表名称中包含中文或者特殊字符时,如果不进行编码转换...
  • yuanziok
  • yuanziok
  • 2015年08月18日 09:52
  • 1945

移动端报表JS开发示例

随着移动互联网的发展,移动报表逐渐成为一种流行的办公应用,移动端开发也逐渐成为报表开发中一个重要部分,本文将围绕移动端报表的二次开发做一些简述。...
  • yuanziok
  • yuanziok
  • 2016年04月07日 11:19
  • 6714

jsp页面传递中文参数乱码的解决

form有2中方法把数据提交给服务器,get和post,分别说下吧。 (一)get提交   1.首先说下客户端(浏览器)的form表单用get方法是如何将数据编码后提交给服务器端的吧。     ...
  • u011518709
  • u011518709
  • 2013年09月06日 12:19
  • 3899

url中向后台传递参数中文乱码

转载这篇文章是因为在项目中遇到通过超链接传递中文参数到后台时,解编码用的字符集在windows跟linux系统中不一样,导致了bug 文章来源:http://www.cnblogs.com/...
  • weigs81082580
  • weigs81082580
  • 2016年11月15日 17:23
  • 3259

RSA加密算法的简单案例

RSA加密算法是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击。...
  • nayun123
  • nayun123
  • 2016年08月16日 11:06
  • 4968

FineReport中如何自定义登录界面

在登录平台时,不希望使用FR默认的内置登录界面,想通过自定义登录界面实现登录操作,这要如何实现呢?...
  • nayun123
  • nayun123
  • 2017年03月21日 16:22
  • 1128

关于jsp页面传递中文参数乱码的解决

  form有2中方法把数据提交给服务器,get和post,分别说下吧。 (一)get提交   1.首先说下客户端(浏览器)的form表单用get方法是如何将数据编码后提交给服务器端的吧。      ...
  • lick4050312
  • lick4050312
  • 2009年10月30日 15:27
  • 10711

js传递参数 中文

1.js传递中文参数使用关键字:  escape 2.C#后台代码url传递参数,中文,Server.UrlEncode("测试"); 3.C#接收上述方法2传递参数: Serve...
  • yanabcdef
  • yanabcdef
  • 2016年07月16日 09:32
  • 179
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Web报表页面如何传递中文参数
举报原因:
原因补充:

(最多只允许输入30个字)