android中文件的下载,如果文件名称是中文名称如何处理
我在做一个MP3的功能,但是需要从web上获得MP3文件列表,然后点击某个文件后下载该文件,现在只能下载英文名称的MP3,不能下载中文的名称,不知道有没有高手做过这方面的,请帮忙解决一下。我附上了我的代码(服务器上的就不传上了,你可以自己解决,注意音乐文件的名称一定要写在一个xml文件中),可以下载后帮忙调试一下,如果解决了(或者有相类似的程序代码也可以),可以将代码发到我的邮箱里:jgt_591019@163.com,谢谢啦。
你也可以不用调试,知道方法的也可以直接在上面回复我,谢谢。
//uriStr这个URL比如在服务端存在这样的路径,如果你这个路径乱码///了,服务端个版本不能再,那肯定找不到这个文件,那么就无法下载咯
String uriStr=localhost+java.net.URLEncoder.encode(url,"UTF-8");
//主机名别encode直接encode文件名···
URL url=new URL(uriStr);
Log.v("url",url);//看看这个log的路径,看看与你服务端的是否一致,不一致的话,你java.net.URLEncoder.encode(url,"UTF-8");//编码以下,保证不能乱码、、
HttpURLConnection httpURLConnection=(HttpURLConnection) url.openConnection();
8) 你下载的时候,是不是传到服务端的中文歌曲名,乱码了啊
你在服务端打印下,你传过去的下载路径是不是乱码?
[code="java"]
//uriStr这个URL比如在服务端存在这样的路径,如果你这个路径乱码///了,服务端个版本不能再,那肯定找不到这个文件,那么就无法下载咯
URL url=new URL(uriStr);
Log.v("url",url);//看看这个log的路径,看看与你服务端的是否一致,不一致的话,你java.net.URLEncoder.encode(url,"UTF-8");//编码以下,保证不能乱码、、
HttpURLConnection httpURLConnection=(HttpURLConnection) url.openConnection();
[/code]
出过来的不是乱码,这个肯定,因为你读的xml···
我的意思是,你请求下载的时候, URL url=new URL(uriStr);
这个请求服务端的文件路径是否乱码、、、
中文文件名本来就有问题。因为“URL”这个东西的规范里规定,URL的字符集只允许"US-ASCII"。
中文字符放在URL里时应该先转换成字节(根据GB、BIG5或者UTF8),然后使用16进制转义。一般(这真没法说什么叫“一般”)服务器接受UTF-8字符,但是,真的是和服务器相关。
Firefox访问http://localhost:1234/中文.html的时候,实际发出的请求是这样的:
[quote]
GET /%E4%B8%AD%E6%96%87.html HTTP/1.1
Host: localhost:1234
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:5.0) Gecko/20100101 Firefox/5.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.8,zh-cn;q=0.5,zh;q=0.3
Accept-Encoding: gzip, deflate
Accept-Charset: GB2312,utf-8;q=0.7,*;q=0.7
Connection: keep-alive
[/quote]
看出来这个“中文”是按UTF-8转义的。