请问,如何将一个包含有中文的url转换成IE能正确识别路径的URL。
比如:ftp://tv/tv1/天龙八部.43集/天龙八部1.rmvb我直接在jsp文件中写:<a href="ftp://tv/tv1/天龙八部.43集/天龙八部1.rmvb">天龙八部</a>结果IE里面打不开链接。用URL url=new URL("ftp://tv/tv1/天龙八部.43集/天龙八部1.rmvb").
字符串"<a href=\" "+ url + "\">" + "天龙八部" + "</a>"代替,IE也不行,但是firefox可以打开相应的链接。IE的网址上显示的是把url里的中文编码成另外一种格式了,但不知道是哪一种格式??该怎样转换url才能使IE能正确识别访问呢?? 谢谢大家!

解决方案 »

  1.   

    用 URLEncode方法进行编码后再用
      

  2.   

    代码设置为UTF-8
    request.setCharacterEncoding ("UTF-8");
    response.setCharacterEncoding ("UTF-8");字符编码
    <%
    String a=java.net.URLEncoder.encode ('天龙八部',"UTF-8");
    %>
    <a href=<%=a%>>LOOK</a>
      

  3.   

    Look
    http://blog.csdn.net/joyous/archive/2007/02/07/1504274.aspx
      

  4.   

    都试过,不行。IE6和Firefox的浏览器可以。我是将本地返回的字符串,传给jsp显示: 
    比如: String s = "ftp://127.0.0.1/天龙八部.43集/天龙八部1.rmvb" ;我将 " <a href= \" " + s + " \"> " + "天龙八部" + "</a>" ;想得到的是我在网页上点击天龙八部的超链接,能够打开s表示的url地址。即:ftp://127.0.0.1/天龙八部.43集/天龙八部1.rmvb。IE8会将这个链接中的汉字编码成应该是16进制的格式,但是却无法打开这个链接。
      

  5.   

    编码问题。
    改成改gbk试试
      

  6.   

    是请求参数乱码了,
    要修改TOMCAT的conf/server.xml
     <Connector port="8080" protocol="HTTP/1.1" 
                   connectionTimeout="20000" 
                   redirectPort="8443" URIEncoding="utf-8"/>设置过虑器public class CharacterEncodingFilter implements Filter {
        
        public void destroy() {    }
        
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,
        ServletException {
    request.setCharacterEncoding("utf-8");
    response.setContentType("text/xml;charset=utf-8");
    chain.doFilter(request, response);
        }
        
        public void init(FilterConfig arg0) throws ServletException {
        }}
    web.xml设置
    <filter>
      <filter-name>characterEncoding</filter-name>
      <filter-class>filter.CharacterEncodingFilter</filter-class>
     </filter>
     <filter-mapping>
      <filter-name>characterEncoding</filter-name>
      <url-pattern>/*</url-pattern>
     </filter-mapping>
     <servlet>jsp页面第一行加
    <%@ page language="java" contentType="text/html; charset=utf-8"%>
      

  7.   

    Linux+Oracle+Java 技术群:87923477 欢迎热爱技术的朋友们的参与
      

  8.   


    请问,Filter的类 应该放在哪个地方呢? 怎么应用?
      

  9.   

    过滤器实现之后,需要将它们编译之后产生的.class文件放入该工程根目录下的WEB-INF(WEB-INF中的classes文件夹)中
      

  10.   

     
    request.setCharacterEncoding
      

  11.   

    我的看法是:
              如果没有放在服务器端,既使你再怎么编码都没用。
    你那个文件本来就只属于你自己。还在jsp中加上"file://"?那是你本地路径好不?必须把编码后的路径位于WEB-INF目录下。
      

  12.   

    将你要转换的中文提取出来 
    用URLEncoder.encode("要转换的中文","UTF-8");
    当然你也可以用其他转码方式
    将中文转码后 在传递 这样任何浏览器都是可以识别
    你这个URl的
    现在网上很多网站 为了不让用户看到传递的参数 都是这么搞的
      

  13.   


    和xiaozejun方法类似,不过使用URLEncoder.encode("中文","UTF-8")方法(包括其他编码方式)在IE8里还是行不通(不过在myeclipse的web Browser倒是可以)。我的解决方法是: String tps = br.readLine();
    String t="";
    for(int i=0; i<tps.length(); i++){
    if(tps.charAt(i)<128) t+=tps.charAt(i);
    else{
                            //改为使用与平台有关的编码方式
    t+=URLEncoder.encode(""+tps.charAt(i));
    }
    }

    tmpStr = "ftp://" + classfier + t;
    URL url = new URL(tmpStr); //这一句无所谓         return "<a href=\" " + url + "\">" + tps + "</a><br></br>";