test.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<form action="result.jsp" method="post">
    <input type="text" name="message" />
    <button type="submit" >提交</button>
   </form>
result.jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 <%=request.getParameter("message") %>EncodingFilter.javaString encoding = filterConfig.getInitParameter("encoding");//UTF-8
req.setCharacterEncoding(encoding);
res.setCharacterEncoding(encoding);
chain.doFilter(req, res);
过滤器也去了, 输出编码也是utf-8 ,jsp 页面中中文可以显示, 可是为啥表单提交后(post) 就老是乱码呢。 tomcat 配置文件也改过了, 还是乱码。
 还有可能是什么问题造成的呢???
急 啊

解决方案 »

  1.   

    JSP文件要存在UTF-8格式(写字本就可以)tomcat server.xml :
        <Connector port="8080" protocol="HTTP/1.1" 
                   connectionTimeout="20000" 
                   redirectPort="8443"
                   URIEncoding="UTF-8" />
    //--------------------------------
    应用程序中的web.xml 加过滤器:
      <filter>
        <filter-name>setEncodeFilter</filter-name>
        <filter-class>comm.util.SetEncodeFilter</filter-class>
        <init-param>
          <param-name>defaultencoding</param-name>
          <param-value>UTF-8</param-value>
        </init-param>
      </filter>
      

  2.   

    不要改  Tomcat
    乱码也就是编码错误  和解码错误   要是????这样的一定是编码错误   这样就是你输入的地方有问题了 
    还有就是解码了  那就要看看接受的问题了  
    你试试这样  还有你的过滤器  看看你过滤设置的对吗!!!!
    // 配置全站统一的字符编码
    String encoding = filterConfig.getInitParameter("encoding");
    response.setCharacterEncoding(encoding);
    response.setContentType("text/html;charset=" + encoding);
    request.setCharacterEncoding(encoding); // 只能解决post方式提交的参数乱码问题
      

  3.   

    哎。 我也好就没用了
     加上了 response.setContentType("text/html;charset=" + encoding);
     也不行。。   session  和request    的 setAttribute() 方法 中添加中文参数  再通过getAttribute()可以正确获取到。    这是为啥呢?????
      

  4.   

    response.setCharacterEncoding("utf-8");
      

  5.   


    以前遇到过,不记得了,明天上午帮你看看。。好像是用ajax弄得还是js了。。明天看了告诉你。。
      

  6.   

    get请求传参中文容易乱码,post也会出现- -
      

  7.   

    get 的话就能正确获取到。
      

  8.   

    String encoding = filterConfig.getInitParameter("encoding");//UTF-8
            res.setContentType(("text/html;charset="+encoding );
            req.setCharacterEncoding(encoding);
            chain.doFilter(req, res);
      

  9.   

    所有文件、项目、全部设成utf8?
    在jsp/servlet的上用System.out.println();把获得的参数输出看看?
    firebug看一下post的的参数有问题没?
      

  10.   

    参数用js转码,urlencode啥来着,后台解码。
      

  11.   

    post 提交就使用过滤器处理乱码呗
      

  12.   

    ServletActionContext.getResponse().setContentType("text/html;charset=GBK");
      

  13.   

    还是不行哦 会不会是MyEclispse 版本的问题?  我是 8.5的啊
      

  14.   

    将tomcat编码设置为utf-8,还有看看页面是不是有其它的编码设置
      

  15.   

    post应该不会出现问题呀,会不会flter没匹配到jsp页面的ulr呢?
      

  16.   

    楼主检查一下web.xml中配置过滤器的顺序。字符编码过滤器一定要是最前面的
      

  17.   

    我觉得lz应该google  baidu一下  ,jsp 乱码问题 ,印象更深刻 ,如果只是别人回答 ,即使解决,还是稀里糊涂的
      

  18.   

    JSP文件保存时要以UTF-8或GB,否则设了编码白搭
      

  19.   

    <Connector port="8080" protocol="HTTP/1.1"  
      connectionTimeout="20000"  
      redirectPort="8443"
      URIEncoding="UTF-8" />
    少了一句话、、
    你找找、
    也不知道   什么=true 、
    忘了
      

  20.   


    <%@ page language="java" import="java.util.*" 
    pageEncoding="UTF-8" contentType="text/html;charset=UTF-8" %>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />request.setCharacterEncoding("UTF-8");
    response.setCharacterEncoding("UTF-8");
      

  21.   

    是不是web.xml配置过滤器顺序的问题!
      

  22.   

    POST传过去的都是单字节数据.所以POST传来的数据编码都是ISO-8859-1的单字节数据.因此英文和数字不会有乱码...在这种情况下.过滤器和server.xml里的设置都是无效的.当然request.setCharacterEncoding()也是无效的因为setCharacterEncoding的原理跟过滤器一样;
    正确的取法: String str = new String(getParameter("message").getBytes("ISO-8859-1"),"UTF-8")
      

  23.   

    这位的方法我试了,已经解决我的乱码问题!我的情况是这样的:
    1、SSH2 框架,struts.xml 配置只配了
      <constant name="struts.i18n.encoding" value="UTF-8" />,其他的编码配置都没配(暂时还没 get 请求提交中文参数的情况,不知是否会乱码);
    2、jsp 页面 post 提交一个表单,该表单包含 address 字段,其字段值为中文;
    3、action 接收该字段,即
      private String address;
    getter...
    setter...
    4、直接打印输出发现是乱码,就按这位说的方法试了一下:
    String str = new String(address.getBytes("ISO-8859-1"),"UTF-8");然后打印输出 str 字段,结果正常。
    最后,谢谢这位兄台的指导方法。
      

  24.   

    POST传过去的都是单字节数据.所以POST传来的数据编码都是ISO-8859-1的单字节数据.因此英文和数字不会有乱码...在这种情况下.过滤器和server.xml里的设置都是无效的.当然request.setCharacterEncoding()也是无效的因为setCharacterEncoding的原理跟过滤器一样;
    正确的取法: String str = new String(getParameter("message").getBytes("ISO-8859-1"),"UTF-8")
    这个答案是正确的
      

  25.   

    正确的取法: String str = new String(request.getParameter("message").getBytes("ISO-8859-1"),"UTF-8")
      

  26.   

    POST 表单提交获取乱码这个问题终于解决了,谢谢了!!!  原来是 POST传来的数据编码都是ISO-8859-1的单字节数据 !!!
      

  27.   

    那过滤器 岂不是毫无意义。每个action都要
    String str = new String(getParameter("message").getBytes("ISO-8859-1"),"UTF-8")