模板名有中文找不到模板
1. 问题描述
当预览某张报表(报表模板名称命名为中文)时,在浏览器中直接输入url访问该报表时可能会出现报错,但是从设计器中直接点击分页预览等,却不会出现问题。
比如在URL中输入访问某张报表,如http://localhost:8075/WebReport/ReportServer?reportlet=参数.cpt ,就会报如下错误信息:
2. 问题原因
因为每个浏览器的编码是不一样的,所以要通过设置服务器端的url编码,来实现服务器的编码和浏览器的编码一致。
为什么中文模板,在设计器中点击分页预览时,可以预览模板,不会出现如上的问题。
原因是设计器中的分页预览那边是FR的设计器封装的代码中通过cjkEncode方式解析处理了中文,你会看到设计器中访问的中文命名的模板(参数.cpt)变为[53c2][6570].cpt,即已经处理其中的中文名称,正常预览模板的效果,如下:
3. 解决方案
3.1 建议使用英文模板名称
可以把模板名改为英文
3.2 修改服务器编码
修改web服务器下面的server.xml配置文件,在Connector属性里面添加:URIEncoding="UTF-8" 或URIEncoding="GB2312",其中GB2312对应IE和火狐浏览器,utf-8对应谷歌浏览器,设置完就可以直接通过URL输入访问中文名的模板和传递中文参数。
这里以tomcat为例:
在tomcat的/conf/server.xml文件中,找到以下这一行:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
这行的意思也就是使用8080端口来接收html的请求。在这里可以加几个参数来配置不同的效果。
URIEncoding="UTF-8" 设置url传输时对url内容的编码格式
compression="on" 打开压缩功能
compressionMinSize="2048" 启用压缩的输出内容大小,这里面默认为2KB
noCompressionUserAgents="gozilla, traviata" 对于以下的浏览器,不启用压缩
compressableMimeType="text/html,text/xml" 压缩类型
对于要解决中文乱码来说,添加URIEncoding="UTF-8"即可,如下:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" />
成功后重启tomcat服务器,通过url访问中文模板就可以成功访问到了。其它的服务器的解决方案类似,只要在对应的地方加上url编码。


3.3 使用cjkEncode处理
使用FR.cjkEncode("中文名称")方式进行转换就可以解决,具体可参考编码转换章节内容。
注:用户集成到自己的系统后,都是讲报表嵌入在系统页面中的,而不是直接在浏览器栏输入,以上情况只发生在未集成测试之时。
附件列表
标签:
已验证
文档内容仅供参考,如果你需要获取更多帮助,付费/准付费客户请咨询帆软技术支持
关于技术问题,您还可以前往帆软社区,点击顶部搜索框旁边的提问按钮
若您还有其他非技术类问题,可以联系帆软传说哥(qq:1745114201)

