因为用get方法发送请求的时候已经进行了url编码,所以和post的直接放松不同。解决方法是在jsp页面中对要传递的字符进行urlencode编码。
具体方法是:<%=URLEncoder.encode(str,"utf-8")%>即可。然后在java中就可以直接接收了。你的是gbk,那你就改成encode(str,"gbk")试试。我没试过gbk模式的。两个模式都试一下吧,肯定有一个是可用的。

解决方案 »

  1.   

    这可不是什么新东西,就是楼上说的,一般在jsp中要encode,在action中decode
    比如:
    response.sendRedirect("target.do?msg="+java.net.URLEncoder.encode("中文"));
    在action中:
    str=request.getParamter("msg");
    str=new String(str.getBytes("ISO-8859-1"));
      

  2.   

    但是很奇怪的是struts-menu显示的菜单中带的中文参数(连接显示的是中文而不是encode后的乱码),使用get方法传递到action中,直接取值不需转码一切正常。但是其他页面传递中文参数进入别的action就不行了,显示的全是乱码以上是我觉得奇怪的地方 我按照mxlmwl(飞星)说得改了以后就好了,但是在action中无须转码,直接接收的就可以了