从带有阿拉伯字符的网址加载图片

时间:2014-02-20 17:28:59

标签: android url utf-8

在我的应用程序中,我需要将几个网址中的图像加载到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方法中。

网址是这样的: http://www.dalass.com/1/ShowPage.php?View=252-%D9%86%D8%A7%D8%AE%D9%86-DALASS-%D8%AF%D8%A7%D9%84%D8%A7%D8%B3.jpg

有人请帮忙

2 个答案:

答案 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);