入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

Android 文件下载中文名乱码的解决办法

创建时间:2012-07-03 投稿人: 浏览次数:5580

         Android用Java实现下载如果下载路径的文件名是中文,会出现乱码。new URL(String filepath),filepath需要是一个字符串,如果出现中文,不会默认为字符串,编码方式不同吧,URL的字符集只允许"US-ASCII"编码。解决办法:

        String filename = "文件中文名.jpg";

        URL url = new URL(fileParentUrl+ File.separator  + java.net.URLEncoder.encode(filename,"UTF-8"));//用UTF-8编码

 参考文件:

@1:

//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();

 @2:
中文文件名本来就有问题。因为“URL”这个东西的规范里规定,URL的字符集只允许"US-ASCII"。
中文字符放在URL里时应该先转换成字节(根据GB、BIG5或者UTF8),然后使用16进制转义。一般(这真没法说什么叫“一般”)服务器接受UTF-8字符,但是,真的是和服务器相关。
Firefox访问http://localhost:1234/中文.html的时候,实际发出的请求是这样的:

引用
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

看出来这个“中文”是按UTF-8转义的。

 

声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
  • 上一篇:没有了
  • 下一篇:没有了
未上传头像