我想通过方形毕加索创建网络应用程序,但如果图像网址包含波斯字符(ا,ب,ج,ی,...)毕加索不加载图像。
此网址无效:
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);
答案 0 :(得分:9)
您需要对URL进行URI编码。
请参阅docs
Uri.encode(url);
或者,如果指定某些允许的字符,则以下方法有效:
private static final String ALLOWED_URI_CHARS = "@#&=*+-_.,:!?()/~'%";
String urlEncoded = Uri.encode(path, ALLOWED_URI_CHARS);
答案 1 :(得分:1)
您需要对Url
进行编码。
所以试试这个
URIUtil.encodeQuery(myUrl).
或者这一个:http://developer.android.com/reference/java/net/URLEncoder.html
URLEncoder.encode(myUrl, "UTF-8");
还有一个问题here
答案 2 :(得分:0)
只需使用此功能
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));
}