这是我访问是的错误页面:
http://127.0.0.1:8080/unicodeTest/file/文档.jsp
原因:不识别中文,
解决方案: 
tomcat  配置:
  <Connector port="8080" maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="true" URIEncoding='UTF-8'/>UTF-8是我自己加的,但是我加完这以后引发了许多不必要的麻烦,
现在想寻求其他的解决方案,http://127.0.0.1:8080/unicodeTest/file/文档.jsp
在访问的时候能够找到该文件。

解决方案 »

  1.   

    访问:http://127.0.0.1:8080/unicodeTest/file/文档.jsp 
    错误信息:
    HTTP Status 404 - /unicodeTest/file/%E6%96%87%E6%A1%A3.jsp--------------------------------------------------------------------------------type Status reportmessage /unicodeTest/file/%E6%96%87%E6%A1%A3.jspdescription The requested resource (/unicodeTest/file/%E6%96%87%E6%A1%A3.jsp) is not available.
    在线等另一个解决方案, 谢谢大侠们,
    在线等·······
      

  2.   

    这个是浏览器设置的,有个选项是总是用utf-8发送数据
    似乎不好解决,用中文文件名或者参数是不好的编程习惯。
      

  3.   

    将启动tomcat进程的用户的编码设置为zh_CN.GB18030,这样可以保证Tomcat服务器正确访问文件系统的中文路径的文件 
    修改Tomcat配置,指定请求解码字符集(URIEncoding= "UTF-8 "),那么,IE如果用UTF-8发送URL请求的话是可以正确访问到中文路径的内容的; <Connector   port= "8080 "   maxHttpHeaderSize= "8192 "   
    maxThreads= "150 "   minSpareThreads= "25 "   maxSpareThreads= "75 "   
    enableLookups= "false "   redirectPort= "8443 "   acceptCount= "100 "   
    connectionTimeout= "20000 "   disableUploadTimeout= "true "     URIEncoding= "utf-8 "   /> 
    上面一步你已经做到了,你试试修改一下IE编码方式
    再测试一下
      

  4.   

    你添加一个过滤器试试看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;
        
        @Override
        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;
            }
        }    @Override
        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);
        }        @Override
        public void destroy() {
            config = null;
        }
    }web.xml 加上:  <filter>
        <filter-name>urlFilter</filter-name>
        <filter-class>com.test.UrlFilter</filter-class>
        <init-param>
          <param-name>DEFAULT_URI_ENCODE</param-name>
          <param-value>UTF-8</param-value>
        </init-param>
      </filter>
      <filter-mapping>
        <filter-name>urlFilter</filter-name>
        <url-pattern>*.jsp</url-pattern>
      </filter-mapping>
      

  5.   

    这样修改会有问题,因为ie会根据默认的编码方式发送url,如果是gbk的话,会导致解析乱码
    火龙果的方式应该没有问题,打后台再进行一次反转编码成汉字
      

  6.   

     Tomcat是Java开发者使用得较多的一个Web服务器,因为它占用资源小,运行速度快等特点,深受Java Web程序员的喜爱。不过,在使用中,由于Java中的中文问题的存在,如果不经过配置,在WEB程序中,不能直接支持具有中文文件名的文件的下载,这为Java Web程序的开发带来一定的不便。本文拟介绍一种手段,解决这个问题。    解决问题的核心在于修改Tomcat的配置,在Server.xml文件中添加一个名为URIEncoding的属性,它用于对HTTP请求中的get方法传过来的URL进行编码。如果直接从Apache站点中下载Tomcat,无论是安装版的exe文件,还是解压缩的ZIP文件,内置的对于get协议中的URL编码都是ISO-8859-1,这个字符集不能直接支持中文等双字节的信息,而中文文件的下载链接恰恰是通过get协议进行的。以下说明修改Tomcat安装目录中的config文件夹中的server.xml文件的方法。    打开config/server.xml文件,如果没有修改过这个文件,应该可以在其中找到如下代码: 
       
       <Connector port="8080"  protocol="HTTP/1.1" 
                   connectionTimeout="20000" 
                   redirectPort="8443" /> 
       
       这段代码规定了Tomcat监听HTTP请求的端口号等信息,可以在这里添加一个属性:URIEncoding,将该属性值设置为UTF-8,即可让Tomcat不再以ISO-8859-1的编码处理get请求。更改后的代码如下所示(红色部分为新添加的代码): 
      
      <Connector port="8080" 
                 URIEncoding="utf-8" 
                 protocol="HTTP/1.1" 
                 connectionTimeout="20000" 
                 redirectPort="8443" /> 
      
      下面,我们准备测试一下更改后的效果。    最为简单的测试方法就是让Tomcat自己列出WEB程序中的目录和文件,默认情况下,Tomcat不会直接列出WEB程序目录中的文件和文件夹,但是,我们可以修改位于安装目录中的config文件夹中的web.xml,使其能够支持自动列出WEB程序中的目录和文件。 
       在config/web.xml文件中找到如下代码: 
       
        <servlet> 
        <servlet-name>default</servlet-name> 
        <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class> 
        <init-param> 
          <param-name>debug</param-name> 
          <param-value>0</param-value> 
        </init-param> 
        <init-param> 
          <param-name>listings</param-name> 
          <param-value>false</param-value> 
        </init-param> 
        <load-on-startup>1</load-on-startup> 
      </servlet> 
       
       将上面的代码中标为红色的部分改为如下内容: 
      
       <init-param> 
          <param-name>listings</param-name> 
          <param-value>true</param-value> 
       </init-param> 
          即将参数listings的属性改为true,就可让Tomcat自动列出某个WEB程序目录中的文件和文件夹。    现在,我们的设置已经完成,将修改的文件保存后,就可以启动Tomcat进行测验了,当然,如果Tomcat正在运行,则需要重新启动,以便配置生效。    现在,可以在Tomcat安装目录中的webapps目录中建立一个名为cntest的文件夹,作为测试的web程序的上下文路径(注意:对于WEB程序的上下文路径,请不要使用中文)。请在cntest中添加一些中文目录和文件,然后在浏览器中打开该WEB程序,如,http://localhost:8080/cntest,测验一下效果吧。当然,也可以在JSP或HTML文件中使用那些包含中文的文件夹或文件名的超级链接。    说明:以上修改均使用Tomcat5.5做的测试,在5.5以上都应该可以,至于5.0和4.x,我没有实验过,不过对于5.0应该也是可以的,但4.x不能保证(4.x在处理HTTP的get和post方法和5.x不大一样)。 
      

  7.   

    http://127.0.0.1:8080/unicodeTest/file/%E6%96%87%E6%A1%A3.jsp 如果可以访问,就用7楼的过滤器,还是建议不要在rul中出现中文,很麻烦,客户需要可以协商解决啊。
      

  8.   

    转码试试,
    2.过滤器(还是转码)。URLDecoder.decode(uri, encode);