package 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;public class CharEncoding implements Filter { public void destroy() {
// TODO Auto-generated method stub } public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
arg0.setCharacterEncoding("GBK");
arg1.setCharacterEncoding("GBK");
arg2.doFilter(arg0, arg1);

} public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub }}

解决方案 »

  1.   

    貌似没错,你在web.xml配置文件配置了没呢。
    我觉得应该是那个问题
      

  2.   

    package creator.common.filter;import javax.servlet.http.*;public class CharacterEncodingHttpServletRequestWrapper extends HttpServletRequestWrapper {    private String ecoding = null;
        private String oldEncoding = null;    public CharacterEncodingHttpServletRequestWrapper(HttpServletRequest request,String encoding) {
            super(request);
            this.ecoding = encoding;
            this.oldEncoding = request.getCharacterEncoding();
        }    public String getParameter(String value) {
            try{
                if((oldEncoding == null || isIOS88591(oldEncoding)) && super.getParameter(value)!=null){
                    return new String(super.getParameter(value).getBytes("iso-8859-1"),ecoding);
                }
                else{
                    return super.getParameter(value);
                }
             }
            catch(Exception e){
                e.printStackTrace();
                return null;
            }
        }    private boolean isIOS88591(String endcoding){
            endcoding = endcoding.toLowerCase();
            return endcoding.startsWith("iso")&& (endcoding.indexOf("8859") != -1) && endcoding.endsWith("1");
        }
    }
    〔CharacterEncodingHttpServletResponseWrapper.java〕package creator.common.filter;import javax.servlet.http.*;public class CharacterEncodingHttpServletResponseWrapper extends HttpServletResponseWrapper {    private String ecoding = null;    public CharacterEncodingHttpServletResponseWrapper(HttpServletResponse response,String encoding) {
            super(response);
            this.ecoding = encoding;
        }    /* (non-Javadoc)
         * @see javax.servlet.ServletResponse#setContentType(java.lang.String)
         */
        public void setContentType(String value) {
            super.setContentType("text/html;charset="+ecoding);
        }}
    〔CharsetEncodingFilter.java〕package creator.common.filter;import java.io.IOException;
    import javax.servlet.*;
    import javax.servlet.http.*;
    public class CharsetEncodingFilter implements Filter {
        private FilterConfig config = null;
        private String RequestEncoding = null;
        private String ResponseEncoding = null;    public void init(FilterConfig arg0) throws ServletException {
            this.config = arg0;
            this.RequestEncoding = config.getInitParameter("RequestEncoding");
            this.ResponseEncoding = config.getInitParameter("ResponseEncoding");
        }    /* (non-Javadoc)
         * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)
         */
        public void doFilter(ServletRequest req, ServletResponse res, FilterChain fc)
            throws IOException, ServletException {
            if(this.config == null){
                return;
            }
            HttpServletRequest request = (HttpServletRequest)req;
            HttpServletResponse response = (HttpServletResponse)res;        CharacterEncodingHttpServletRequestWrapper  mrequestw  = new CharacterEncodingHttpServletRequestWrapper(request,ResponseEncoding);
            CharacterEncodingHttpServletResponseWrapper wresponsew = new CharacterEncodingHttpServletResponseWrapper(response,ResponseEncoding);
            fc.doFilter(mrequestw,wresponsew);
        }    public void destroy() {
        }}
    〔web.xml〕  <filter>
        <filter-name>CharsetEncoding</filter-name>
        <filter-class>javabean.com.CharsetEncodingFilter</filter-class>
        <init-param>
          <param-name>RequestEncoding</param-name>
          <param-value>iso-8859-1</param-value>
        </init-param>
        <init-param>
          <param-name>ResponseEncoding</param-name>
          <param-value>gb2312</param-value>
        </init-param>
      </filter>
      <filter-mapping>
        <filter-name>CharsetEncoding</filter-name>
        <url-pattern>/*</url-pattern>
      </filter-mapping>