Fresco加载带特殊字符的图片路径失败

用Fresco加载图片发现加载不出来,开始怀疑是图片的问题,但用 imageView.setImageBitmap是可以正常展示,但由于业务需求,需要对图片进行放大缩小效果,故必须使用Fresco加载,后来发现该图片名含有%3a、%2f这类符号,发现该类符号是在浏览器和插件中显示非标准的字母和字符,它们分别对应的是:和/,所以这张图片应该是从网上获取的。找到问题了,就把该类字符全部替换掉。

/**
 * \/:*?*<>| 这些字符用URL编码形式表示的ASCII字符,
 * 在浏览器和插件中显示非标准的字母和字符,如%3a、%2f等,含有这些
 * 字符串的文件名、用fresco是加载不出来的
 * modify by
 */
public class UrlEncodeUtil {

    /**
     * 将含有的特殊字符替换掉
     * 如果不含有特殊字符,返回""
     */

    public static String replaceSpecialChar(String path){
        //   \/:*?*<>|这几个字符分别对应的URL编码形式表示的ASCII字符
        String regEx = "%5c|%2f|%3a|%2a|%3f|%3c|%3e|%7c";
        Pattern p = Pattern.compile(regEx,Pattern.CASE_INSENSITIVE);
        Matcher m = p.matcher(path);
        if (m.find()){
            return m.replaceAll("").trim();
        }
        return "";
    }
}

其他特殊字符对应关系

你可能感兴趣的:(Fresco加载带特殊字符的图片路径失败)