是这样的。请先看下面的代码:<script>  var URL = '/zmt/tiles/ry/openSelectField.jsp?excel=excel&where='+where;
  
  openwin(URL,'400','830');
</script>where的值是带有like和百分号的。例如:
 where = "name like %林%"
参数传到openSelectField.jsp后。我使用下面的代码去拿到参数的值,如下:String where = (String)request.getParameter("where");但是却发现where = null。碰到这个问题后,我就先用不带%的参数值。例如 whereExcel=" name = 林彬"
试一下openSelectField.jsp中是否可以拿到值。结果是可以拿到的。
所以我就用了java中的URLEncoder来处理。URLEncoder.encode(where,"UTF-8")处理完后,再次调用如下代码:var URL = '/zmt/tiles/ry/openSelectField.jsp?excel=excel&where='+where;
  
  openwin(URL,'400','830');则openSelectField.jsp上是可以拿到值的。
但是此时我在openSelectField.jsp上有一个按钮。点击完后,想把这个where传到action上去。这个时候,无论我在action中如何处理,都是乱码。这样导致我无法访问数据库了。在action中我是用RLDecoder.decode(where,"UTF-8");
来做的。
  还试验了。 where = new String(where.getBytes("ISO8859_1"),"UTF-8");     以及request.setCharacterEncoding(arg0)
等方式。就是不行。请问我该如何解决这个问题。像javascipt中,还有encodeURI() 和encodeURIComponent等。目前还没有试过。我觉得最主要是不是%百分号的问题。

解决方案 »

  1.   

    呵呵,这个需要修改tomcat的编码方式为UTF-8就可以了
      

  2.   

    where = new String(where.getBytes("ISO-8859-1"),"UTF-8"); 
      

  3.   

    一般get方式传递中文容易出现乱码
    我用get方式传递到action 出现乱码,一直到现在都没解决,试了各种办法
      

  4.   

    tomcat/get 方式乱码问题,在 CSDN 已经被问烂了!1,修改 tomcat 的 server.xml 的 Connector,加上 URIEncoding="utf-8"
    2,地址栏中的参数使用 URL 编码。JavaScript 使用 encodeURI 方法,Java 使用 URLEncoder.encode 方法,JSTL 中可以直接使用 <c:url> 和 <c:param>
      

  5.   

    1、因为是修改旧的系统,所以直接修改tomcat的配置的话,是会影响到其他的代码的。2、在url中因为有了百分号%%所以,必须使用JavaScript 中的encodeURI 方法,或者Java 中的URLEncoder.encode 方法,进行编码。这样的话。tomcat才不会赋予null值(我用的是tomat5.0.27)3、我传递%%传了几个页面。所以还得处理一下的。如下:  =============================================================请看下面的代码:
    var formobj = obj.form;
       var whereExcel = "<%=whereExcel%>";
       if(whereExcel.indexOf('like') >= 0)
       {
        whereExcel = '<%=URLEncoder.encode(whereExcel,"UTF-8")%>';   }
       //alert(whereExcel);
       var sumCount = "<%=sumNote%>";
       //alert(whereExcel);
       //retrun;
       var URL = '/zmt/tiles/ry/openSelectField.jsp?excel=excel&sumCount='+sumCount+'&whereExcel='+whereExcel;
      
       openwin(URL,'400','830');
    此时是传递到openSelectField.jsp页面上的。
    所以openSelectField.jsp首先得这样处理的:whereExcel = '<%=URLEncoder.encode(whereExcel,"UTF-8")%>';
    接下来又是使用下面的代码调用action的话,则 如下:
     var formObj = obj.form;
          var whereExcel = "<%=whereExcel%>";
          alert(whereExcel);
           var sumCount = "<%=sumCount%>";
       if(whereExcel.indexOf('like') >= 0)
       {
        whereExcel = '<%=URLEncoder.encode(whereExcel,"UTF-8")%>';
        formObj.action='/zmt/ry/search.do?excel=excel&sumCount='+sumCount+'&hasLike=like&whereExcel='+whereExcel;
       }else
       {
       formObj.action='/zmt/ry/search.do?excel=excel&sumCount='+sumCount+'&whereExcel='+whereExcel;
       }
        
          formObj.submit.click();
    最后在action中还得这样处理whereExcel = '<%=URLEncoder.encode(whereExcel,"UTF-8")%>';
    就可以了。==================================================================
    这样的话,最终传到action后,才可以拿到%林%这样的值的