页面是 a.jsp 传递一个表单到b.jsp,a.jsp里面有一个下拉选框选者类型name="op",b.jsp根据传回的op不同的变量值来判断不同的方法处理表单数据
b.jsp:
 String op = request.getParameter("op");
     response.setContentType("xhtml/xml;charset=utf-8");
     request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");//我不知道这里设置编码有没有用
 if ("p".equals(op)) {
        request.getRequestDispatcher("c.jsp").forward(request, response);//当op=p的时候request的参数传到c.jsp处理
    }else if ("m".equals(op)) {
request.getRequestDispatcher("d.jsp").forward(request, response);//当op=m的时候request的参数传到d.jsp处理
}
.
.
.
 例如但op=m 表单数据"图片"传到d.jsp处理,但我用get方式来显示的话:地址是b.jsp?keywords=%E5%9B%BE%E7%89%87&op=m而不是想要的d.jsp?keywords=%E5%9B%BE%E7%89%87&op=m ,但传递方式是对的,用英文提交可以得出结果中问的话就是乱码,比如表单数据是“abc”地址b.jsp?keywords=%E5%9B%BE%E7%89%87&op=m能过得出正确的值,而上面的"图片"对应的b.jsp?keywords=%E5%9B%BE%E7%89%87&op=m 而是乱码,而我手动改成d.jsp?keywords=%E5%9B%BE%E7%89%87&op=m则能得出结果,请问这个request是不是有问题,是不是要编码,这个编码过程怎么写,或者方法不对,请高手指点

解决方案 »

  1.   

    如果你用的是tomcat的话
    在tomcat的conf文件夹下,找到server.xml文件
    修改其中的内容为
    <Connector port="8080" 
                  maxThreads="150" minSpareThreads="25" maxSpareThreads="75" 
                  enableLookups="false" redirectPort="8443" acceptCount="100" 
                  debug="0" connectionTimeout="20000" 
                  disableUploadTimeout="true"  
                  useBodyEncodingForURI="true" URIEncoding="UTF-8"/
    主要是红字那,
    你该下试试
      

  2.   

    URLENCODING
    URLDECODING的编解码.你找找这两个类.
    要不就用POST提交.
      

  3.   

    用post 提交方式把。  request.setCharacterEncoding("utf-8"); 对 get方法是没有作用的。
    如果你可以用 <input type="hidden" name="" value="" /> 来传参。
      

  4.   

    不用GET的话就不能获得连接了呀
      

  5.   

    URLENCODING 
    URLDECODING这两个类.你看了么?这就是专门对中文编解码用的.request.setCharacterEncoding("utf-8"); 这个只能是对POST才管用的
      

  6.   

    看看这个对你有没有帮助
    http://blog.csdn.net/rascalboy520/archive/2008/06/06/2516038.aspx