当预览某张报表(报表模板名称命名为中文)时,在浏览器中直接输入url访问该报表时可能会出现报错,但是从设计器中直接点击分页预览等,却不会出现问题,下面就通过java报表开发工具FineReport来简单介绍一下。
前期准备工作(包括相关工具或所使用的原料等)java报表开发工具FineReport7.1.1大小:148.2M 适用平台:windows/linux 详细的操作方法或具体步骤
比如在URL中输入访问某张报表,如http://localhost:8080/WebReport/ReportServer?reportlet=参数.cpt ,就会报如下错误信息:

问题原因
因为每个浏览器的编码是不一样的,所以要通过设置服务器端的url编码,来实现服务器的编码和浏览器的编码一致。
为什么这样的中文模板,在设计器中点击分页预览等,却不会出现如上的问题。
原因是设计器中的分页预览那边是FR的设计器封装的代码中通过cjkEncode方式解析处理了中文,你会看到设计器中访问的中文命名的模板(参数.cpt)变为[4f20][53c2].cpt,即已经处理其中的中文名称,正常预览模板的效果,如下:

解决方案
直接在浏览器中输入
修改web服务器下面的server.xml配置文件,在Connector属性里面添加:URIEncoding="GB2312"或是URIEncoding="utf-8",其中GB2312对应IE和火狐浏览器,utf-8对应谷歌浏览器,设置完就可以直接通过URL输入访问中文名的模板和传递中文参数。
下面以tomcat为例,可以通过修改conf下的server.xml文件实现URL中的中文传参,在server.xml下找到如下代码:Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"中加入URIEncoding="GB2312",成功tomcat服务器,通过url访问中文模板就可以成功访问到了。其它的服务器的解决方案类似,只要在对应的地方加上url编码。

集成到项目中
使用FR.cjkEncode("中文名称")方式进行转换就可以解决。
注:用户集成到自己的系统后,都是讲报表嵌入在系统页面中的,而不是直接在浏览器栏输入,以上情况只发生在未集成测试之时。
原作者:FineReport经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
