中文乱码问题解决,过滤器配置,get post提交乱码,filter,struts乱码,jsp乱码

时间:2021-03-10 13:05:48
 

原文地址:http://www.java2000.net/viewthread.jsp?tid=2993

过滤器配置
  1. <filter>   
  2.  <filter-name>encoding</filter-name>   
  3.  <filter-class>   
  4.   filter.FilterEncoding   
  5.  </filter-class>   
  6.  <init-param>   
  7.   <param-name>encoding</param-name>   
  8.   <param-value>gbk</param-value>   
  9.  </init-param>   
  10. </filter>  
  1. package filter;   
  2. import java.io.IOException;    
  3. import javax.servlet.Filter;    
  4. import javax.servlet.FilterChain;    
  5. import javax.servlet.FilterConfig;    
  6. import javax.servlet.ServletException;    
  7. import javax.servlet.ServletRequest;    
  8. import javax.servlet.ServletResponse;    
  9. public class FilterEncoding implements Filter    
  10. {    
  11.  protected String encoding;          // 接收字符编码   
  12.  protected boolean ignore;            // 是否忽略大小写   
  13.  protected FilterConfig filterConfig; // 初始化配置   
  14.   
  15.  public void init(FilterConfig filterConfig) throws ServletException    
  16.  {   
  17.   // 从web.xml文件中读取encoding的值   
  18.   encoding = filterConfig.getInitParameter("encoding");    
  19.   // 从web.xml文件中读取ignore的值   
  20.   String value = filterConfig.getInitParameter("ignore");    
  21.   // 以下三种情况均为忽略大小写   
  22.   if(value == null)    
  23.   {    
  24.    ignore = true;    
  25.   }   
  26.   else if(value.equalsIgnoreCase("yes"))    
  27.   {    
  28.    ignore = true;    
  29.   }    
  30.   else if(value.equalsIgnoreCase("true"))    
  31.   {    
  32.    ignore = true;    
  33.   }    
  34.  }    
  35.  // doFilter方法   
  36.  public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException    
  37.  {   
  38.   if(ignore || request.getCharacterEncoding() == null)    
  39.   {   
  40.    // 如果为空先从web.xml中得到   
  41.    String encoding = selectEncoding(request);    
  42.    if(encoding != null)    
  43.    {   
  44.     // 设置字符集编码   
  45.     request.setCharacterEncoding(encoding);    
  46.    }   
  47.   }   
  48.   // 继续执行   
  49.   chain.doFilter(request, response);    
  50.  }    
  51.  // 得到字符编码   
  52.  private String selectEncoding(ServletRequest request)    
  53.  {    
  54.   return encoding;    
  55.  }    
  56.  public void destroy()    
  57.  {    
  58.      
  59.  }    
  60. }  
如果是url的get提交参数带中文的 
可以改下面这个文件,加入一个URIEncoding="GBK" 
X:/Tomcat 5.5/conf/Server.xml
  1. <Connector    
  2.         port="8080"    
  3.         redirectPort="8443"    
  4.         minSpareThreads="25"    
  5.         connectionTimeout="30"    
  6.         maxThreads="150"    
  7.         maxSpareThreads="75"    
  8.         URIEncoding="GBK">   
jsp头文件
  1. <%@ page contentType="text/html;charset=gbk"%>  
//此处的charset的值要和web.xml里的  <param-value></param-value>值一样