tomcat下载文件时,URL含有文字参数与空格参数出错(java.io.FileNotFoundException错误) 解决方法(转)
像这个例子 URL="http://10.0.2.2:8080/AndroidServer/Music/陈奕迅 - 浮夸.mp3 "这样的URL就无法通过,所以在“陈奕迅 - 浮夸.mp3”加上URL之前要经过一些处理。一般情况下,URL参数为文字和空格都会出现乱码,需经过编码后才能执行通过。
下面介绍解决方法:
1.修改tomcat里面的/conf/server.xml文件 找到<Connector port="8080" 节点。在里面
加入URIEncoding="UTF-8" 属性编码 默认编码为"ISO-8859-1"一般情况下是不支持文字参数。
修改后如下:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8"/>
2.参数处理,URL="http://10.0.2.2:8080/AndroidServer/Music/陈奕迅 - 浮夸.mp3 "
在参数 陈奕迅 - 浮夸.mp3 加入URL之前先进行处理,先对其进行编码
例如:String mm="陈奕迅 - 浮夸.mp3";
String ss=URLEncoder.encode(mm, "UTF-8"); //这里是讲String编码成UTF-8
System.out.println("ss="+ss);
//输出结果 ss=%E9%99%88%E5%A5%95%E8%BF%85%+-+E6%B5%AE%E5%A4%B8.mp3
//其中空格被编码成 + ;这样编码后空格编码还是有问题,需在处理,下面继续
ss=ss.replaceAll("\\+","%20"); //因为 + 符号在java是关键字符需要转义,不能直接用
// %20 为空格的编码,这里替换掉,URL才不会报错
URL="http://10.0.2.2:8080/AndroidServer/Music/"+ss
这样URL的文字 空格参数问题就解决了。
其实总的就两句话,修改tomcat配置,参数传之前先处理。
转自:http://www.eoeandroid.com/thread-115195-1-1.html
页:
[1]