Http協(xié)議中默認的編碼字符集和平臺字符集都不是中文的,所以Web項目中經(jīng)常會遇到中文亂碼問題。

為防止中文亂碼出現(xiàn),首先我們要把項目中每個網(wǎng)頁的編碼形式改成中文的,HTML網(wǎng)頁中的charset改成UTF-8JSP網(wǎng)頁中的pageEncoding改成UTF-8

然后我們做一個過濾器,每次對網(wǎng)頁的請求都會進入到過濾器,并且把requestresponse都改成UTF-8編碼形式,這樣防止了中文亂碼的出現(xiàn)。

源代碼如下:

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>