| 
         
     
     | 
     | 
    
  
    | 
    彻底解决Tomcat 5.0.19中文乱码 | 
   
  
     | 
   
  
     | 
   
  
    | 
     作者:未知  来源:月光软件站  加入时间:2005-2-28 月光软件站  | 
   
  
    一、Include的页面乱码
    现象:include进来的页面出现乱码,其它页面正常。
    原因:Tomcat在缺省情况下使用ISO-8859-1编码,但是在include时有时Tomcat不能正确根据外层.jsp文件的编码解析include进来的文件,造成include进来的文件中的中文乱码。
    解决:这儿可以有很多解决办法,但是对于我们的中文环境,从根本上的解决办法是将Tomcat 5.0.19的核心缺省编码从ISO-8859-1修改为GBK 。可以在下面地址下载修改过的jar文件,
    jasper-compiler.jar,jasper-runtime.jar位于/common/lib下,其它位于/server/lib下,将新的.jar文件替代原.jar即可。      二、提交的数据乱码
    现象:通过表单提交的数据出现乱码。
    原因:原因未明。可能是Tomcat在接收到请求后,并没有能够根据request中的信息提前正确的编码方式。
    解决:可以添加一个设置字符集的Filter。
  //=================初学者注意,请将此文件放在WEB-INF\classes\filters下, //注意先以SetCharacterEncodingFilter.java保存,然后编译一下,推荐使用eclipse 
package filters;
  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.UnavailableException;
  public class SetCharacterEncodingFilter implements Filter {  protected String encoding = null;  protected FilterConfig filterConfig = null;  protected boolean ignore = true;
   public void destroy() {   this.encoding = null;   this.filterConfig = null;  }
  public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
   // Conditionally select and set the character encoding to be used  if (ignore || (request.getCharacterEncoding() == null)) {   String encoding = selectEncoding(request);   if (encoding != null)    request.setCharacterEncoding(encoding);  }
   // Pass control on to the next filter  chain.doFilter(request, response);
  }
  public void init(FilterConfig filterConfig) throws ServletException {
   this.filterConfig = filterConfig;  this.encoding = filterConfig.getInitParameter("encoding");  String value = filterConfig.getInitParameter("ignore");  if (value == null)   this.ignore = true;  else if (value.equalsIgnoreCase("true"))   this.ignore = true;  else if (value.equalsIgnoreCase("yes"))   this.ignore = true;  else   this.ignore = false;
  }
  protected String selectEncoding(ServletRequest request) {  return (this.encoding); }
  } |   //==================这段代码是我在网上摘录的,因为不知到出处所以无法标明作者 //然后将下面<filter>开始的代码加入到web.xml中,它位于WEB-INF下。 //我的QQ:22070699 //配置web.xml
  
<filter>  <filter-name>Set Character Encoding</filter-name>  <filter-class>filters.SetCharacterEncodingFilter</filter-class>  <init-param>   <param-name>encoding</param-name>   <param-value>GBK</param-value>  </init-param> </filter>
  <filter-mapping>  <filter-name>Set Character Encoding</filter-name>  <url-pattern>/*</url-pattern> </filter-mapping> |    
 
  | 
   
  
     | 
   
  
     相关文章:相关软件:  | 
   
   
      |