一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

安卓中Picasso加载中文网址失败的解决方法

时间:2016-06-14 编辑:简简单单 来源:一聚教程网

写这篇博客之前,也是先感叹一下我水平的一般和思考问题方式的欠缺,这个博客的起因,是项目中遇到的一个问题,服务器返回给我一个带有中文的图片地址,一开始并没感觉到什么不对,因为我的手机可以去加载这样的图片,但是测评中心同事(以下简称T女士&她&T)将一个加载不出来图片的手机扔给我,我看了以下我的手机,很正常,所以我下意识的说,你这手机有问题吧,实际上,很多时候我们都会产生这样的想法,界内称之为”甩锅”。

我抱着T的手机有问题的心态,过了几天,但是BUG还是挂在debug平台上,我又不得不去查看原因(最起码找到原因,然后接着甩锅最好),我确实找到了原因,那就是服务器返回的网址,带有中文,可能部分手机无法去自动转码,所以,就加载不出来。接着,找到了原因,我又想把锅甩给客户,”让客户不要输入中文路径!”,现在想想,确实过分了。

以上是对我自己的批评,也是告诫一下同事们、同学们,遇到问题,可能你真的感觉这不是你的问题,你解决不了,但是其实,你不知道的领域内,解决这个问题的方法很多。

好了,废话说完了,接下来说这篇博客的重点:对中文字符串进行URL转码:

比如这个网址:/00-120片丽相如/150130145416383首图-150×125.jpg,在某些手机上是加载不出来的(原因不详),经过研究,转换为如下形式则可以加载出来:

/00-120%E7%89%87%E4%B8%BD%E7%9B%B8%E5%A6%82/150130145416383%E9%A6%96%E5%9B%BE-150×125.jpg

方法如下:

 代码如下 复制代码

public  static String utf8Togb2312(String str){
    String data="";
    try {
        for(int i=0;i             char c=str.charAt(i);
            if(c+"".getBytes().length>1&&c!=':'&&c!='/'){
                data = data+java.net.URLEncoder.encode(c+"","utf-8");
            }else {
                data=data+c;
            }
        }
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }finally{
        System.out.println(data);
    }
    return  data;
}

下面这段代码的意义是:只对中文进行转码

 代码如下 复制代码

if(c+"".getBytes().length>1&&c!=':'&&c!='/'){
    data = data+java.net.URLEncoder.encode(c+"","utf-8");
}else {
    data=data+c;
}

热门栏目