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 "";
    }
}

其他特殊字符对应关系

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容