[java]webwork使用get提交方式乱码的解决办法

在webwork中使用get方式提交的表单,取得的中文一般都会有乱码。post 方式 一般不会有这个问题。。。

 

这个问题搞了我一天,后来通过查找一些资料终于解决。

笔者的开发环境为webwork + velocity ,编码统一为utf-8

1.在velocity.properties 中设置utf-8

input.encoding = utf-8
output.encoding = utf-8
default.contentType=text/html; charset\=utf-8

 

2.webwork.properties中也设置编码:

webwork.i18n.encoding=UTF-8

 

3.页面中的表单设置为get方式,当提示时会是这样的字符串“%E4%B8%AD%E5%9B%BD” (中国)

  java中可以使用System.out.println(URLEncoder.encode("中国","UTF-8")) 得到这个编码 。

 

4.在需要取得表单数据的action中

      比如提交过来的表单内容为:aa.action?keyword=%E4%B8%AD%E5%9B%BD

      webwork将会自动将表单keyword 属性s et到变量 keyword 中,这时直接读取keyword将是乱码。

      应该使用 keyword = new String(keyword.getBytes("ISO-8859-1"),"utf-8"); 将其转换一下会得到正确的中文。

  

 

 

posted @ 2009-04-16 10:39    阅读(672)  评论(0编辑  收藏  举报