在第二个页面中写
request.setCharacterEncoding("GB2312");

解决方案 »

  1.   

    乱码问题啦,很简单的,把字符串重新编码并解码就行了,比如说:
    new String(request.getParameter("name").getBytes(),"GBK");
    第二个参数GBK可省,因为系统的默认编码可能是GBK。
      

  2.   

    name=new String(s.getByte("iso8859-1"),"gb2312");
      

  3.   

    使用new String(request.getParameter("name").getBytes(),"GBK");
    固然可以,但是如果表单的内容很多,难道每个都要转换吗?struts中的formbean 是作为参数传入到perform( )方法中,formbean中的内容应该不会变吧!比如:form.setName("某某");那么form中的name值应该一直是"某某",怎么在第二个页面中form.getName() 取到的值却变成了????
      

  4.   

    大虾们,熟悉struts 的快快出现呀
      

  5.   

    你可以在jsp将中文放到一个String[]中去。
    把String[]传给javaBean,再在javaBean中取出来。再拿String[]中的元素来用。连解码都可以省了。:P好方法吧。:)
      

  6.   

    Struts,使用一个Filter.
    在Filter中调用one_bird(一鸟)谈到的 
     
    request.setCharacterEncoding("GB2312");  
     
      

  7.   

    在所有页面中设置gb2312,Action处理方法中也设置gb2312,
    把ActionForm设置为session范围,并指定存储在session中的属性名称,
    需要数据时,利用该session中存储的对象来得到就可以。
      

  8.   

    我看到这里很多人还在推荐使用诸如 new String(s.getByte("iso8859-1"),"gb2312"); 这样的转码做法, 看来有必要澄清以下, 其实在支持 Servlet2.3 的服务器上, 最后的方法是 un(一路狂奔)所说的:Struts,使用一个Filter.
    在Filter中调用one_bird(一鸟)谈到的request.setCharacterEncoding("GB2312");
      

  9.   

    我看到这里很多人还在推荐使用诸如 new String(s.getByte("iso8859-1"),"gb2312"); 这样的转码做法, 看来有必要澄清以下, 其实在支持 Servlet2.3 的服务器上, 最好的方法是 run(一路狂奔)所说的:Struts,使用一个Filter.
    在Filter中调用one_bird(一鸟)谈到的request.setCharacterEncoding("GB2312");
      

  10.   

    对,最好使用单一前端控制器,比较方便,一些公共的操作可以放在控制器servlet里完成。
    使用过滤器也很简单,对所有的请求输入先进行必要的处理。
      

  11.   

    按照one_bird(一鸟)谈到的request.setCharacterEncoding("GB2312");
    问题还是没有解决!
      

  12.   

    我也发现这个问题!1.jsp 和2.jsp中的formbean(都是AForm)中的值并不一样! 也许这是struts中的一个bug吧!"struts中的formbean 是作为参数传入到perform( )方法中,formbean中的内容应该不会变吧!
    "
    这个疑问的结果是 传递的过程中 formbean中的内容改变了.举一个例子:
    1.jsp中的AForm中的name值为"天津"
    2.jsp中的AForm中的name值为"?ì?ò" 
    看来,AForm中的name值按照iso8859_1编码的!
    进一步调试:第一页的AForm中的name的确是"天津",当点击下一步时,将进入第二个页面,发现 AForm中先是执行public void Name(String name) 这个时候name的值已经是"?ì?ò" ,然后执行  public String getName() name的值当然还是"?ì?ò";
    我对此过程的理解是struts先把传递过来的name参数保存到formbean中,然后再取出name,放到jsp页面中显示!看来,得改struts的原代码了!
      

  13.   

    "看来,AForm中的name值按照iso8859_1编码的!"确切的说: 参数还是按照iso8859_1编码方式编码的!所以才造成Aform中name值的变化
      

  14.   

    网页中的表单form中的值是以post方式传递,我只知道这一点!看来,form中参数的传递还是先编码(按照iso8859-1),再传的这是html规范规定的,还是servlet规定的,我再看看!
      

  15.   

    解决方法:在formbean中的setName()函数中加入
    name=new String(s.getByte("iso8859-1"),"gb2312");明白了?!终于完成了!
      

  16.   

    我觉得你是否过早地学习了struts,很明显你的一些基础知道并没搞好,比如说简单的乱码问题。
      

  17.   

    唉,patrickjava(人族天皇)机枪兵空投(HumanGod) 的解决办法会有问题的。你要自己给FormBean赋值怎么办?
    比如说在Action中对FormBean进行初始化,会有新的乱码问题。为什么不试试Filter的解决方法呢。