报表已集成到Web页面中,通过在页面传递参数至报表中时,会发现有时某些参数值,传递到报表中是显示为问号(???)或乱码等等一系列不能正常显示的情况。这是由于浏览器和报表服务器的编码不同,字符多次进行编码转换时出现错误导致字符的显示出现乱码,尤其是中日韩文和特殊字符更容易出现乱码问题。下面就通过定制报表系统FineReport来简单介绍。
工具/原料
1
定制报表系统FineReport7.1.1
2
大小:148.2M 适用平台:windows/linux
方法/步骤
2
对URL进行cjkEncode
3
如果只对参数值进行编辑转换,在参数后面调用FR.cjkEncode()方法,如:window.location='http://localhost:8075/WebReport/ReportServer?reportlet=reportname.cpt¶name='+FR.cjkEncode('华东');
4
对Form表单进行cjkEncode如果是以Form表单把参数提交到报表里面,也同样需要在提交前调用cjkEncode进行编码转换,如下例子
5
特殊符号处理如果在需要进行cjkEncode的URI的参数中包含特殊字符,比如%,#,$,=,&,/,?,+,@等字符时,需要在cjkEncode之后,再次调用javascript的encodeURIComponent对这些特殊字符进行编码。如参数值是”%华%“这样的字符,就需要写成encodeURIComponent(FR.cjkEncode('%华%')),一定要先进行cjkEncode,然后再进行encodeURIComponent,完整代码如下: