Http协议中默认的编码字符集和平台字符集都不是中文的,所以Web项目中经常会遇到中文乱码问题。

为防止中文乱码出现,首先我们要把项目中每个网页的编码形式改成中文的,HTML网页中的charset改成UTF-8JSP网页中的pageEncoding改成UTF-8

然后我们做一个过滤器,每次对网页的请求都会进入到过滤器,并且把requestresponse都改成UTF-8编码形式,这样防止了中文乱码的出现。

源代码如下:

package com.dr.servletform;

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.jsp.jstl.core.Config;

public class MyFilter implements Filter{

       String encoding="";

       public void destroy() {

       }

       public void doFilter(ServletRequest request, ServletResponse response,

                     FilterChain chain) throws IOException, ServletException {

              System.out.println("pass here-------");

              request.setCharacterEncoding(encoding);

              response.setCharacterEncoding(encoding);

              chain.doFilter(request, response);

       }

       public void init(FilterConfig config) throws ServletException {

              String encoding=config.getInitParameter("encoding");

              this.encoding=encoding;

              System.out.println(encoding);

       }

}

web.xml中配置如下:

<filter>

 <filter-name>MyFilter</filter-name>

 <filter-class>com.dr.servletform.MyFilter</filter-class>

- <init-param>

 <param-name>encoding</param-name>

 <param-value>UTF-8</param-value>

 </init-param>

 </filter>

- <filter-mapping>

 <filter-name>MyFilter</filter-name>

 <url-pattern>/*</url-pattern>

 </filter-mapping>