【问题标题】:Android Square Picasso not load persian character image urlAndroid Square Picasso 不加载波斯字符图片 url
【发布时间】:2017-03-30 15:29:03
【问题描述】:

我想通过方形毕加索创建 Web 应用程序,但如果图像 url 包含波斯字符 (ا،ب،ج،ی، ...) Picasso 无法加载图像。

此网址无效:

        Picasso.with(mContext).load("http://www.shutterstock.ir/thumbs/10006/74601661-گربه-چشم-ابی-ولاغر-سیامی-در-یک-پس-زمینه-،-وکتور-سفید.jpg")
    .placeholder(R.drawable.ic_launcher)
    .error(R.drawable.face_top_image).noFade().resize(100, 100)
    .into(imageView);    

这个网址有效

        Picasso.with(mContext).load("http://www.shutterstock.ir/thumbs/10006/74601661-%DA%AF%D8%B1%D8%A8%D9%87-%DA%86%D8%B4%D9%85-%D8%A7%D8%A8%DB%8C-%D9%88%D9%84%D8%A7%D8%BA%D8%B1-%D8%B3%DB%8C%D8%A7%D9%85%DB%8C-%D8%AF%D8%B1-%DB%8C%DA%A9-%D9%BE%D8%B3-%D8%B2%D9%85%DB%8C%D9%86%D9%87-%D8%8C-%D9%88%DA%A9%D8%AA%D9%88%D8%B1-%D8%B3%D9%81%DB%8C%D8%AF.jpg")
    .placeholder(R.drawable.ic_launcher)
    .error(R.drawable.face_top_image).noFade().resize(100, 100)
    .into(imageView);    

【问题讨论】:

    标签: android picasso


    【解决方案1】:

    您需要对 URL 进行 URI 编码。

    docs

    Uri.encode(url);
    

    或者,如果指定某些允许的字符,则以下工作:

    private static final String ALLOWED_URI_CHARS = "@#&=*+-_.,:!?()/~'%";
    String urlEncoded = Uri.encode(path, ALLOWED_URI_CHARS);
    

    【讨论】:

    • Uri.encode(url) 将对整个字符串进行编码,包括:// 和路径中的正斜杠。最好的方法是使用ALLOWED_URI_CHARS 来逃避那些:/s。
    【解决方案2】:

    您需要对您的 Url 进行编码。 所以试试这个

    URIUtil.encodeQuery(myUrl).
    

    或者还有这个:http://developer.android.com/reference/java/net/URLEncoder.html

    URLEncoder.encode(myUrl, "UTF-8");
    

    还有一个问题here

    【讨论】:

    • 似乎 URIUtil 在 4.5.4 中已被删除或重新定位。我很难确定要包含哪个 apache 包。
    【解决方案3】:

    只使用这个函数

     public static String encodUrl(String url){
                String[] splitUrl = url.split("/");
                String imageName = splitUrl[splitUrl.length-1];//get name of file
                String mainUrl = url.replaceAll(imageName , "");//get url without file name bacause dont need to encode
    
                return (mainUrl + Uri.encode(imageName));
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-06
      • 1970-01-01
      • 1970-01-01
      • 2018-05-28
      • 1970-01-01
      • 2018-07-14
      • 2015-09-22
      • 2015-06-27
      相关资源
      最近更新 更多