在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"); 将其转换一下会得到正确的中文。