有没有什么办法能够解决JSP Servlet中 doPost 和doGet中的中文编码问题!
能够适用这两种请求方式的!使其在页面显示中文时能够正常!!!!
谢谢各位老大分享!!!

解决方案 »

  1.   

    最简单的就是在JSP上面写把编码格式设置为pageEncoding="UTF-8"
    好像在servlet里面也能设置编码格式吧,好像是‘request.setPageEncoding="UTF-8"’???
    还有方法就是写个过滤器
    package edu.aptech.accp.filter;import java.io.IOException;import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    public class EncodingFilter extends HttpServlet implements Filter { /**
     * 设置编码格式
     */ public void doFilter(ServletRequest req, ServletResponse res,
    FilterChain fc) throws IOException, ServletException {
    HttpServletRequest request = (HttpServletRequest)req;
    if(request.getMethod().equalsIgnoreCase("post")){
    request.setCharacterEncoding("UTF-8");
    }
    fc.doFilter(request, res);
    }
    /**
     * 此方法不用管,初始化用的
     */
    public void init(FilterConfig filterConfig) throws ServletException {
    // TODO Auto-generated method stub

    }}然后再web.xml里面配置一下就可以了
    <filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>edu.aptech.accp.filter.EncodingFilter</filter-class>
    </filter>
    <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>*.do</url-pattern>
    </filter-mapping>推荐最后一种方法
      

  2.   

    用过滤器就好 具体见楼上
    ps:不过有时utf-8 中文还是会乱码 建议所有页面编码gb2312 过滤器gb2312
      

  3.   

    关键是编码要统一,自己做项目的话,一般情况下用UTF-8是没问题的。
      

  4.   

    我的意思是  从servlet中向jsp页面传入中文  jsp页面中不显示乱码
    用ISO-8859-1转换成中文
    doGet 和doPost  其中doPost是无法通过转码将中文传入jsp页面中的!
    怎么弄?
      

  5.   

    yourString=new String(yourString.getBytes("ISO8859_1"), "gb2312");
      

  6.   

    jsp到后台用这种,servlet到JSP会出现乱码那就只能是编码问题了
      

  7.   

    response.setContentType("text/html;charset=gbk");
      

  8.   

    <%@page contentType="text/html,Charset=gb2312"%>Charset要大写C
      

  9.   

    用过滤器就好
    有时utf-8 中文还是会乱码 所有页面编码gbK 过滤器gbK
      

  10.   

      public class EncodingFilter implements Filter { @Override
    public void destroy() {
    // TODO Auto-generated method stub } @Override
    public void doFilter(ServletRequest req, ServletResponse resp,
    FilterChain chian) throws IOException, ServletException {
    HttpServletRequest hreq = (HttpServletRequest)req;
    HttpServletResponse hresp = (HttpServletResponse)resp;
    hreq.setCharacterEncoding("gbk");
    chian.doFilter(req , resp);
    hresp.setContentType("text/html;charset=gbk");

    } @Override
    public void init(FilterConfig arg0) throws ServletException {
    // TODO Auto-generated method stub }
    }但是这种方法并不能解决GET提交的编码问题,对于GET提交是与服务器相关的,有的服务器不存在问题,但TOMCAT是有问题的,解决方法是
    String param = new String(str.getBytes("iso-8859-1"),"gbk");
      

  11.   

    有没有办法解决既能过滤doPost和doGet请求的方法呢?
      

  12.   

    可以改TOMCAT 配置文件server.xml  加上characterEncoding=gbk,具体到网上查一下。