在我的应用程序中,我需要将几个网址中的图像加载到Gridview中。 问题是我的网址包含阿拉伯字符,并且未下载图片。 我用英文网址测试了我的应用程序,它工作正常,但我有阿拉伯语的问题。 我试过这个来解码网址,但它没有用:
String result = URLDecoder.decode(imageUrls.get(j), "UTF-8");
也尝试了这个:
connection.setRequestProperty("Accept-Charset", "UTF-8");
connection.setRequestProperty("Content-Type", "text/plain; charset=utf-8");
要下载位图的代码段:
for(j=0; j<imageUrls.size(); j++){
try {
String result = URLDecoder.decode(imageUrls.get(j), "UTF-8");
URL url=new URL(result);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestProperty("Accept-Charset", "UTF-8");
connection.setRequestProperty("Content-Type", "text/plain; charset=utf-8");
connection.setDoInput(true);
connection.connect();
InputStream input = connection.getInputStream();
Bitmap bitmap = BitmapFactory.decodeStream(input);
btarray.add(bitmap);
} catch (Exception ex) {
}
}
并且
imageview.setImageBitmap(btarray.get(position));
在ImageAdapter getView方法中。
有人请帮忙
答案 0 :(得分:3)
您必须使用Uri.encode(String)
//String result = URLDecoder.decode(imageUrls.get(j), "UTF-8");
String result = Uri.encode(imageUrls.get(j));
URL url = new URL(result);
答案 1 :(得分:0)
Uri uri = Uri.parse(url);
String encodeUriString = Uri.encode(uri.getLastPathSegment());
String uriString = uri.toString().replace(uri.getLastPathSegment(), encodeUriString);
Log.d(TAG, uriString);