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



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

过滤器配置

 

Xml代码  收藏代码
  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>

 

 

Java代码  收藏代码
  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.  public void init(FilterConfig filterConfig) throws ServletException
  15.  {
  16.   // 从web.xml文件中读取encoding的值
  17.   encoding = filterConfig.getInitParameter(“encoding”);
  18.   // 从web.xml文件中读取ignore的值
  19.   String value = filterConfig.getInitParameter(“ignore”);
  20.   // 以下三种情况均为忽略大小写
  21.   if(value == null)
  22.   {
  23.    ignore = true;
  24.   }
  25.   else if(value.equalsIgnoreCase(“yes”))
  26.   {
  27.    ignore = true;
  28.   }
  29.   else if(value.equalsIgnoreCase(“true”))
  30.   {
  31.    ignore = true;
  32.   }
  33.  }
  34.  // doFilter方法
  35.  public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException
  36.  {
  37.   if(ignore || request.getCharacterEncoding() == null)
  38.   {
  39.    // 如果为空先从web.xml中得到
  40.    String encoding = selectEncoding(request);
  41.    if(encoding != null)
  42.    {
  43.     // 设置字符集编码
  44.     request.setCharacterEncoding(encoding);
  45.    }
  46.   }
  47.   // 继续执行
  48.   chain.doFilter(request, response);
  49.  }
  50.  // 得到字符编码
  51.  private String selectEncoding(ServletRequest request)
  52.  {
  53.   return encoding;
  54.  }
  55.  public void destroy()
  56.  {
  57.  }
  58. }

 

如果是url的get提交参数带中文的
可以改下面这个文件,加入一个URIEncoding=”GBK”
X:\Tomcat 5.5\conf\Server.xml

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头文件

Html代码  收藏代码
  1. <%@ page contentType=”text/html;charset=gbk”%>   //此处的charset的值要和web.xml里的  <param-value></param-value>值一样

 

单个类的乱码可以这样来解决:tempStr = new String(str.getBytes(“iso-8859-1″),”gb2312″);

 

http://heisetoufa.iteye.com/blog/227365

如果发现本文有误,欢迎批评指正