img src属性有中文时无法显示图片

2014-11-24 01:08:46 · 作者: · 浏览: 0

如果让img的src属性可以有中文,比如让\可以正常显示呢?

网上方法很多,比如修改tomcat目录下的server.xml,在server.xml中类似如下配置:

< Connector port="8080"

……

URIEncoding="UTF-8" / >

这种方法经证实,并不有效。

经证实,最有效的是增加过滤器。

步奏如下:

1 在web.xml中增加过滤器:

  
    
   
    urlFilter
   
    
   
    com.dj.filter.UrlFilter
   
    
    
    
     DEFAULT_URI_ENCODE
     
    
     UTF-8
     
   
  
  
  
  
    
   
    urlFilter
   
    
   
    /*
   
  
  

2 在src中增加过滤器代码

package com.dj.filter;

import java.io.IOException;
import java.net.URLDecoder;

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 UrlFilter implements Filter {

    public final static String DEFAULT_URI_ENCODE = "UTF-8";
    
    private FilterConfig config = null;
    private String encode = null;
    
    public void init(FilterConfig config) throws ServletException {
        this.config = config;
        this.encode = config.getInitParameter("DEFAULT_URI_ENCODE");
        if(this.encode == null) {
            this.encode = DEFAULT_URI_ENCODE;
        }
    }

    public void doFilter(ServletRequest req, ServletResponse res,
            FilterChain chain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) req;
        String uri = request.getRequestURI();
        String ch = URLDecoder.decode(uri, encode);
        if(uri.equals(ch)) {
            chain.doFilter(req, res);
            return;
        }
        ch = ch.substring(request.getContextPath().length());
        config.getServletContext().getRequestDispatcher(ch).forward(req, res);
    }    

    public void destroy() {
        config = null;
    }
}
可能还有别的更好的方法,还望交流!~~