java中Filter過濾器處理中文亂碼的方法
阿新 • • 發佈:2018-12-17
注意問題:在學習用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 /*