1. 程式人生 > >java中Filter過濾器處理中文亂碼的方法

java中Filter過濾器處理中文亂碼的方法

注意問題:在學習用selvert的過濾器filter處理中文亂碼時,在filter配置初始化時用了utf-8處理中文亂碼,而在提交的jsp頁面中卻用了gbk。雖然兩種都可以出來中文亂碼,但是卻造成了處理亂碼的格式不一致。所以編譯出錯。

解決方法:所有地方都用utf-8或gbk 程式碼如下: //過濾器類 CharactorFilter.jsp package cn.com.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 CharactorFilter implements Filter { //繼承Filter類 //字元編碼 String encoding=null;

public void doFilter(ServletRequest request, ServletResponse response,
        FilterChain chain) throws IOException, ServletException {
    if(encoding!=null){
    //設定request字元編碼
        request.setCharacterEncoding(encoding);
     //設定response字元編碼
        response.setContentType("text/html;charset="+encoding);
    }
 //傳遞給下一個過濾器
    chain.doFilter(request, response);

}

public void init(FilterConfig filterConfig) throws ServletException {
  //獲取初始化引數
    encoding=filterConfig.getInitParameter("encoding");

}

public void destroy() {
    // TODO Auto-generated method stub
    encoding=null;
}

}

web.xml 程式碼如下:

CharactorFilter cn.com.Filter.CharactorFilter encoding utf-8 CharactorFilter /*