比如:url:http://loaclhost:8080/test/我的测试/t.jpg
在浏览器地址栏内出现的是上面的url.但TOMCAT却报出
test/%E6%88%91%E7%9A%84%E6%B5%8B%E8%AF%95/t.jpg 找不到文件的错误。我如何才能让图片显示?

解决方案 »

  1.   

    tomcat下不要用中文目录,容易出问题。
      

  2.   

    方法一:在Url中不使用中文
    方法二:在tomcat目录下conf文件夹里面修改server.xml文件,加入URIEncoding="gbk",这个GBK是你需要统一的编码,如果你页面是GBK的就用GBK,如果是UTF-8的 就用 UTF-8.
      

  3.   

    但是我页面和tomcat下server.xml中的编码都是GBK呀。
      

  4.   

    具体运行情况我不是很清楚,以前也遇到过这样的事情,我首先对URL做一个处理在,在javaScript中
    比如
    function displayJsp()
    {      
      ……  
      var url="<%=request.getContextPath()%>/scheduler/params.jsp?path="+path+"&name="+encodeURI(tempStr)   +"&physicalName="+encodeURI(physicalName);
      
      rtnValue=window.showModalDialog(url,'_blank','dialogWidth:550px; dialogHeight:350px; center:Yes; resizable: Yes; help: No;');
    ……
    }
    其中url里的"&name="+encodeURI(tempStr)   +"&physicalName="+encodeURI(physicalName),因为physicalName和tempStr是中文,所以加了encodeURI,你可以试试看行不行
      

  5.   



      方法一:在Url中不使用中文 
      方法二:在tomcat目录下conf文件夹里面修改server.xml文件,加入URIEncoding="gbk",这个GBK是你需要统一的编  码,如果你页面是GBK的就用GBK,如果是UTF-8的 就用 UTF-8.
    2 URIEncoding="GB2312"用的是post  提交3 如果是get提交用,转码,4 也可以自己写一个过滤器
      

  6.   

    路径最好不要用中文
    如果用了中文,最好是有utf-8,再像3楼样设置下
      

  7.   

    还是去改一下吧,用中文路径可是可以,但我也不记得怎么配置去了,你去baidu一下,应该可以找到答案的.
      

  8.   

    路径尽可能不用中文吧  貌似很容易出问题也可以给在js里给路径加上encodeURI()方法 和6楼说的差不多
    var pars = encodeURI("这里是你需要的url");
      

  9.   

    最好的办法是将 server.xml 改成 UTF-8 的编码就行了,因为 URL 采用 UTF-8 编码进行传输。如果改 UTF-8 有困难,一定要用 GBK 的话,还有一种办法做一个过滤器试试看:web.xml 增加:  <filter>
        <filter-name>UrlEncodingFilter</filter-name>
        <filter-class>com.bao.filter.UrlEncodingFilter</filter-class>
        <init-param>
          <param-name>url.default.encoding</param-name>
          <param-value>utf-8</param-value>
        </init-param>
      </filter>
      <filter-mapping>
        <filter-name>UrlEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
      </filter-mapping>过滤器的内容为:
    package com.bao.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 UrlEncodingFilter implements Filter {    private String defaultEncoding = null;
        
        public void init(FilterConfig config) throws ServletException {
            defaultEncoding = config.getInitParameter("url.default.encoding");
            if(defaultEncoding == null) {
                defaultEncoding = "utf-8";
            }
        }    public void doFilter(ServletRequest req, ServletResponse res,
                FilterChain chain) throws IOException, ServletException {
            HttpServletRequest request = (HttpServletRequest)req;
            String path = request.getRequestURI();
            path = URLDecoder.decode(path, defaultEncoding);
            if(!hasChineseChar(path)) {
                chain.doFilter(req, res);
                return;
            }
            String context = request.getContextPath();
            path = path.substring(context.length());
            request.getRequestDispatcher(path).forward(req, res);
        }
        
        private boolean hasChineseChar(String uri) {
            char[] chs = uri.toCharArray();
            for(int i = 0; i < chs.length; i++) {
                if(chs[i] >= '\u4e00' && chs[i] <= '\u9faf') {
                    return true;
                }
            }
            return false;
        }    public void destroy() {
            defaultEncoding = null;
        }
    }
      

  10.   

    加过滤器
    <filter>
        <filter-name>UrlEncodingFilter</filter-name>
        <filter-class>com.bao.filter.UrlEncodingFilter</filter-class>
        <init-param>
          <param-name>url.default.encoding</param-name>
          <param-value>utf-8</param-value>
        </init-param>
      </filter>
      <filter-mapping>
        <filter-name>UrlEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
      </filter-mapping>
      

  11.   

    如果是这url:http://loaclhost:8080/test/我的测试/t.jpg把 “我的测试”进行编码转换,就可以了因为ie会把“我的测试”自动编码,后生成的一个新字符串,当然找不到你的文件了,因为你没test/%E6%88%91%E7%9A%84%E6%B5%8B%E8%AF%95/t.jpg这样的目录