BIRT2.2.2中文化问题的解决方法

对于BIRT 2.1.0版本的中文化问题,请参考: http://www.eclipseworld.org/bbs/read-cec-tid-6069.html
 
=============================
以下是flyjimi补充的。针对BIRT 2.2.2。
=============================
 
1、界面中文化问题,不需要像上文写的修改java源码。对2.1.1已经提供了语言包。在 http://download.eclipse.org/birt/downloads/lang.php?build=R-R1-2_2_2-200802271210
现在2.2.2的还没有出语言包,两种途径:
(1)下载源码,找到其中的source/nl/org.eclipse.birt.report.viewer.nl/src/org/eclipse/birt/report/resource/Messages_zh_CN.msg。改名
(2)自己汉化。
在viewservlets.jar/org/eclipse/birt/report/resource目录,找到资源文件Message.properties,把里面的消息都改成中文的。
然后用jdk工具native2ascii 转成unicode。
native2ascii -encoding GBK 源文件名 目标文件名
目标文件名用Message.properties,然后替换原来的Message.properties文件即可。
如果要定制/frameset方式预览页面,也可直接修改webcontent/birt/pages/下的页面。
2、中文参数的问题。
(1)get方式。如果只处理通过url提交的参数。
引用 http://www.eclipseworld.org/bbs/read-cec-tid-14877-fpage-4.html, grief95 的解决方法。
修改 tomcat 的server.xml文件,在Connector元素中增加属性useBodyEncodingForURI="true"
并且,url中的中文参数必须事先转码.eg:
String param=java.net.URLEncoder.encode("中文参数","UTF-8");
<a href="../birt/frameset?__report=privilegerpt.rptdesign?m=<%=param%>">查看</a>
即ok.
(2)post方式。除了像上文修改ParameterAccesor.java,最好还修改viewservlets.jar/org/eclipse/birt/report/filter目录下的ViewerFilter.java。默认encoding=UTF-8,修改为GBK。
3、修改后的viewservlets.jar。
(1)修改了viewservlets.jar/org/eclipse/birt/report/resource/Message.properties为中文。
(2)修改了viewservlets.jar/org/eclipse/birt/report/utility/ParameterAccesor.java文件。
 /**
  * UTF-8 encode constants.
  */
 public static final String UTF_8_ENCODE = "GBK";//"UTF-8"; //$NON-NLS-1$
(3)修改了viewservlets.jar/org/eclipse/birt/report/filter/ViewerFilter.java文件。
public ViewerFilter()
    {
        //encoding = "UTF-8";
        encoding = "GBK";
        filterConfig = null;
    }
 
注意:
        修改viewservlits.jar只是解决了post提交的中文参数。若要同时解决get提交的url中的中文参数,还是需要修改 tomcat 的server.xml文件,在Connector元素中增加属性useBodyEncodingForURI="true"。但是,不要再进行UTF-8编码。
 
好像不能上传附件,有需要的可以给我留言。

你可能感兴趣的:(tomcat,String,report,url,语言,encoding)