乱码问题,究其原因,都是所使用的字符集不一样所导致的。解决方法也有很多种。以下介绍的的事通过设置过滤器
来实现的方法
1、EncodingFilter
package com.njupt.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; import javax.servlet.http.HttpServletRequest; public class EncodingFilter implements Filter { @Override public void destroy() { // TODO Auto-generated method stub } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { System.out.println("filter起作用啦啦啦啦"); HttpServletRequest req = (HttpServletRequest)request; String method = req.getMethod(); if("GET".equals(method)){ EncodingHttpServletRequestWrapper wrapper = new EncodingHttpServletRequestWrapper(req); chain.doFilter(wrapper, response); }else{ chain.doFilter(request,response); } } @Override public void init(FilterConfig arg0) throws ServletException { // TODO Auto-generated method stub } }
2、EncodingHttpServletRequestWrapper
package com.njupt.filter; import java.io.UnsupportedEncodingException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequestWrapper; public class EncodingHttpServletRequestWrapper extends HttpServletRequestWrapper { private HttpServletRequest request; public EncodingHttpServletRequestWrapper(HttpServletRequest request){ super(request); this.request = request; } @Override public String getParameter(String name) { String value = request.getParameter(name); if(value != null){ String data = null; try { data = new String(value.getBytes("iso-8859-1"),"utf-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return data; } return super.getParameter(name); } }
需要注意的是,写完了Filter,记得要在web.xml中配置上,配置代码如下:
<filter> <filter-name>EncodingFilter</filter-name> <filter-class>com.njupt.filter.EncodingFilter</filter-class> </filter> <filter-mapping> <filter-name>EncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
<%@ page contentType="text/html; charset=utf-8" %>