请问,如何将一个包含有中文的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能正确识别访问呢?? 谢谢大家!
比如: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能正确识别访问呢?? 谢谢大家!
request.setCharacterEncoding ("UTF-8");
response.setCharacterEncoding ("UTF-8");字符编码
<%
String a=java.net.URLEncoder.encode ('天龙八部',"UTF-8");
%>
<a href=<%=a%>>LOOK</a>
http://blog.csdn.net/joyous/archive/2007/02/07/1504274.aspx
比如: 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进制的格式,但是却无法打开这个链接。
改成改gbk试试
要修改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"%>
请问,Filter的类 应该放在哪个地方呢? 怎么应用?
request.setCharacterEncoding
如果没有放在服务器端,既使你再怎么编码都没用。
你那个文件本来就只属于你自己。还在jsp中加上"file://"?那是你本地路径好不?必须把编码后的路径位于WEB-INF目录下。
用URLEncoder.encode("要转换的中文","UTF-8");
当然你也可以用其他转码方式
将中文转码后 在传递 这样任何浏览器都是可以识别
你这个URl的
现在网上很多网站 为了不让用户看到传递的参数 都是这么搞的
和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>";