java.net.URLEncoder.encode(sql)是一个转换编码的,默认的是转成:
你可以
sql="?gh=0001&xm=" + java.net.URLEncoder.encode("忘忧草");
request.getParameter(java.net.URLDecoder.decode("xm"));
一般就不会有问题.

解决方案 »

  1.   

    倒,写反了
    java.net.URLDecoder.decode(request.getParameter("xm"));
      

  2.   

    to  xiaofenguser(风雨):
    我想问一下,这样做和我把整个sql先java.net.URLEncoder.encode,然后再分别取出来有什么区别嘛?
      

  3.   

    试过了,不能对整个sql用java.net.URLEncoder.encode,只能单用!
    你的是什么系统?
    用sql="?gh=0001&xm=" + java.net.URLEncoder.encode("忘忧草");
    不行吗?
      

  4.   

    java.net.URLEncoder.encode(sql) 这个是对URL进行编码。,request.getParameter("xm") --到这一步时又成了经典的中文问题了!你需要进行编码转换!与上一步无关。
      

  5.   


    String temp_str = str;
    byte[] temp = temp_str.getBytes("ISO8859_1");
        haveChangedCharacter = new String(temp);
    试一下,以前我用SQLServer 和tomcat就是这样弄的,没有问题
      

  6.   

    to : MasterChen(master):
    你说的是有道理,但是我目前用的调试服务器是WSAD,它做得比较好,不需要进行中文转换的啊。如果我把一个中文放在一个隐含域里,然后在另外一个页面直接request.getParemeter()的话,根本不会出现中文乱码的问题。只是在通过response.sendRedirect()重定向时,如果url中有中文的话,会出现中文乱码。所以我想这不应该是中文转换的问题吧,而且有一点,如果你在WSAD中用temp_str.getBytes("ISO8859_1");这样转换的话,反而会把中文转换成乱码!!
      

  7.   

    传递:
    response.sendRedirect("?gh=0001&xm=" + java.net.URLEncoder.encode("忘忧草"));
    接收:
    String s=new String(request.getParameter("xm").getBytes("ISO8859_1"),"gb2312");
    out.println(s);
      

  8.   

    to xiaofenguser(风雨):
    你说的方法,我也试过了,好象就是不行那。哎,有没有用WSAD的朋友,也遇到过类似的情况啊?请不吝赐教!!!
      

  9.   

    看看这个贴子,或许有用.
    http://expert.csdn.net/Expert/topic/1349/1349218.xml?temp=.2253534