javaweb的Filter過濾器設置全站編碼
阿新 • • 發佈:2017-08-03
... eth 字符集 ext method 缺少 param pri ati
FIlter配置全站編碼有一種方法是重寫getParameter方法,也就是繼承HttpServletRequestWrapper在重寫getParameter方法,還有一種就是如下:
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // 將requese進行強轉 HttpServletRequest req = (HttpServletRequest) request; HttpServletResponse resp = (HttpServletResponse) response; // 得到參數提交方式 String method = req.getMethod(); // 分為Get和Post兩種方式進行處理 if(method.equalsIgnoreCase("post")) { System.out.println("采用的是Post請求方式..."); // post 請求方法,直接可以進行設置 req.setCharacterEncoding("utf-8"); resp.setContentType("text/html;charset=utf-8"); } else { System.out.println("采用的是Get請求方式..."); // get 請求方法,對於請求的參數的進行改變設置字符集 resp.setContentType("text/html;charset=utf-8"); Enumeration<String> enumeration= req.getParameterNames(); while(enumeration.hasMoreElements()) { String key = enumeration.nextElement(); String[] values = req.getParameterValues(key); // 對值進行字符集的編碼設置 for(int i=0; i<values.length; i++) { values[i] = new String(values[i].getBytes("iso-8859-1"), "utf-8"); } } } chain.doFilter(req, resp); }
如果在FIlter中進行制定編碼方式的編碼,且代碼無誤的話,還是顯示亂碼,那麽可能存在的問題是因為Tomcat的<Connector>標簽缺少了URIEncoding的配置。
配置如下:
修改Tomcat下的/conf/server.xml配置文件,制定URIEncoding;
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/>
就是加上:URIEncoding="UTF-8"
javaweb的Filter過濾器設置全站編碼