乱码问题的解决方案(通过设置过滤器来实现)

来源:互联网 发布:国内数据库 编辑:程序博客网 时间:2024/05/03 21:00

乱码问题,究其原因,都是所使用的字符集不一样所导致的。解决方法也有很多种。以下介绍的的事通过设置过滤器

来实现的方法


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 {@Overridepublic void destroy() {// TODO Auto-generated method stub}@Overridepublic 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);}}@Overridepublic 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 extendsHttpServletRequestWrapper {private HttpServletRequest request;public EncodingHttpServletRequestWrapper(HttpServletRequest request){super(request);this.request = request;}@Overridepublic 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>

而且,这时候,JSP页面的编码要显式指明是UTF-8,否则,也很可能开始乱码。代码如下:

<%@ page contentType="text/html; charset=utf-8" %>


原创粉丝点击