我是在页面用<a>标签跳转,href="login.do?typeid=表格维护",在action中得到后再传到页面时就是乱码,我加了过滤器,页面也加了pageEncoding="UTF-8",可是没用,还是乱码,请教大家怎样解决?

解决方案 »

  1.   

    那么你在action中得到的时候是不是乱码?
    你先确认下
      

  2.   

    再详细点,把jsp代码和后台程序代码都用回复栏上加代码方法帖上来,标明哪个地方出现乱码,太模糊,没办法解决
      

  3.   

    tomcat做web服务器时,通过地址栏传中文参数时,为防止浏览器上的为乱码 
    需在服务器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"/>中加入useBodyEncodingForURI="true" URIEncoding="UTF-8"就可以了.
      

  4.   

    tomcat做web服务器时,通过地址栏传中文参数时,为防止浏览器上的为乱码 
    需在服务器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"/>中加入useBodyEncodingForURI="true" URIEncoding="UTF-8"就可以了.
      

  5.   

    在action中打印就是乱码了
    页面代码是这样的<a href="login.do?typeid=表格维护">表格维护</a>
    action中就用getparameter得到,然后再setAttribe传到页面,该设的全设了,就是不能解决
      

  6.   

    这个要比较两个的区别之处了,最主要的我想,应该是直接启动时是由eclipse项目导出的,是不是漏掉什么文件没打包之类的,或者eclipse下用的resin和你直接启动的是不是同一个服务器,用的配置是不是一样等等
      

  7.   

    你用getparameter得到后用getByte("gb2312") 转一次 在转成String 再传
      

  8.   

    要么就是按照9楼说的,在action中再转码为GB2312一次
      

  9.   

    得到中文转码,
    typeid="表格维护";
    typeid=URLEncoder.encode(typeid,"UTF-8");
    href="login.do?typeid=<%=typeid%>",
      

  10.   

    然后在接收的jsp里加上
    String typeid= URLDecoder.decode(request.request.getParameter("typeid"),"UTF-8");
      

  11.   

    页面得加上 <%@page contentType="text/html; charset=UTF-8"%>
    lz加了没呢?
      

  12.   

    首先澄清一点的是,在URL中传递参数的话,设置过滤器也没用.在URL中传递参数,是通过HTTP报头来传递的.并不是类似于通过表单来传递,表单中传递的参数是在HTTP中的BODY中传送的.而设置字符过滤器只能起到过滤HTTP中BODY中的参数.而TOMCAT默认是ISO8859-1的编码方式,所以你在URL中传递过去后就是乱码了.而且过滤器也不管用了.
    解决方法.直接改变TOMCAT的默认字符编码方式:
    tomcat做web服务器时,通过地址栏传中文参数时,为防止浏览器上的为乱码 
    需在服务器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"/> 中加入useBodyEncodingForURI="true" URIEncoding="UTF-8"就可以了. 
    才是正解
    结贴把!!!
      

  13.   

    谢谢大家,解决了,是在tomcat中加上了那句话.
      

  14.   

     URIEncoding="UTF-8只是针对form表单提交的
     URL传入的值 selname
     selname=new String(selname.getBytes("ISO-8859-1"), "UTF-8");
    转型下就好了,但是IE6的貌似有点小问题,IE7的就ok,为了安全,就设置下过滤器,很准哦,我自己刚刚解决了
      

  15.   

    太谢谢19楼。我找了一天,才看见你的帖子。并且测试通过。跪谢。
    不过还有一个问题。
    如果用的不是tomcat,而是其他的中间件。该怎么办?