具有阿拉伯名称且编码无法打开的图像

images having arabic names with encoding not opening

我正在制作一个 Android 应用程序,我的图像 url 包含阿拉伯字符。

下面是我使用的代码...

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

示例 URL 如下。

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

知道为什么图像在编码 url 后仍未显示吗?

最后下面是我做的...

第 1 步:从 URL

中提取图像名称
String imageName = "http://www.sss.com/test.png";
imageName = imageName.replaceAll("http://www.sss.com/", "");

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

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

所以编码 url 将如下所示。

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

注: 如果URL中有space,你需要更新代码如下。

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

在编码之前不要用 %20 替换 space,因为它会编码 %20,这将导致不正确的 url。所以用 %20 替换 spaces 将在编码之后。

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