具有编码未打开的阿拉伯语名称的图像

时间:2015-10-19 07:08:56

标签: android image encoding url-encoding

我正在创建一个Android应用,其中我有包含阿拉伯字符的图片网址。

以下是我正在使用的代码......

Log.e(TAG, "Video Image -- > " + Uri.encode(data.get(position).getPhoto().toString()));
Picasso.with(act).load(Uri.encode(data.get(position).getPhoto().toString()))
        .resize(pW, pH)
        .centerCrop()
        .skipMemoryCache()
        .error(R.drawable.img_table_view)
        .placeholder(R.drawable.img_table_view)
        .into(viewHolder.image);

示例网址如下所示。

http://www.ssss.com/Karikatir/سبسي3ILAWESVVSKNVMWYLLTFWRASZ.jpg

Log的输出如下。

10-19 10:00:08.038  25617-25617/com.sss.app E/VideosAdapter﹕ Video Image -- > http%3A%2F%2Fwww.ssss.com%2FKarikatir%2F3ILAWESVVSKNVMWYLLTFWRASZ.jpg

知道为什么即使在编码网址后图片也不显示?

1 个答案:

答案 0 :(得分:1)

以下是我的所作所为......

第1步:从网址中提取图片名称

String imageName = "http://www.sss.com/test.png";
imageName = imageName.replaceAll("http://www.sss.com/", "");

第2步:编码此图像名称而不是完整网址

String encodedURL = "http://www.sss.com/" + Uri.encode(imageName);

Picasso.with(act).load(encodedURL)
        .resize(pW, pH)
        .centerCrop()
        .skipMemoryCache()
        .error(R.drawable.img_table_view)
        .placeholder(R.drawable.img_table_view)
        .into(viewHolder.image);

所以编码的网址如下所示。

String encodedURL = "http://www.sss.com/" + Uri.encode(imageName);

注意: 如果网址中有空格,您需要更新以下代码。

String encodedURL = "http://www.sss.com/" + Uri.encode(imageName).replaceAll(" ", "%20");

在编码之前不要用%20替换空格,因为它将编码%20,这将转到不正确的网址。因此,用%20替换空格将在编码之后。

发布答案,以便帮助某人,因为我在网上找不到解决方案......