jetspeed 显示汉字的方法

wwh 04-05-19

我在5月初用cvs从apache checkout jetspeed,生成的版本是jetspeed-1.6-dev。可是我发现界面上显示的中文是乱码。
我弄了很长时间才搞定,我把方法列出来,请各位指点一下有没有更好的方法,先谢谢了

velocity的.vm文件中的中文正确显示,修改配置文件TurbineResource.properties
services.VelocityService.input.encoding=gb2312
services.VelocityService.output.encoding=gb2312

浏览器form提交的汉字是乱码,解决方法:修改TurbineResource.properties,定义
content.defaultencoding=gb2312


汉化绑定的字符串:
进入目录src/java/org/apache/jetspeed/modules/localization,将JetspeedLocalization_en.properties复制为JetspeedLocalization_zh.properties,并在JetspeedLocalization_zh.properties中汉化字符串.


但是这样好象还是不行,不得已,我自已写了一个类mypackage.MyLocalizationService extends JetspeedLocalizationService,
并重载getString(),如下


public class MyLocalizationService extends JetspeedLocalizationService
{
private static final JetspeedLogger logger = JetspeedLogFactoryService.getLogger(MyLocalizationService.class);
public String getString(String bundleName, Locale locale, String key)
{
String value=super.getString(bundleName,locale,key);
String retvalue=value;
try
{
retvalue=new String(value.getBytes("8859_1"),"gb2312");
}
catch(Exception e)
{
logger.error("getString error",e);
}
return retvalue;
}
}

最后在TurbineResource.properties中设置
locale.default.language=zh
locale.default.country=CN
locale.default.charset=gb2312
services.LocalizationService.classname=mypackage.MyLocalizationService


这样无论是.vm中的汉字、浏览器提交的汉字和本地化文件中的汉字都显示正常。有的参数是试出来的,有的是看源码学
来的,还写了一个类。应该不需要这样麻烦,有没有更简单的方法?




banq
2004-05-23 12:22

好办法,jetspeed具体我没有做过,不过按照我以前统一编码方式的思维应该可以,因为他们都是Web程序 。。