【问题标题】:JSoup get absolute url of an image with special charactersJSoup 获取带有特殊字符的图像的绝对 url
【发布时间】:2013-09-10 02:01:35
【问题描述】:

我正在使用 JSoup 和 Android 从某个站点获取图像 url,但某些 url 包含特殊字符,例如 (é,è,à...) 示例:

http://www.mysite.com/détail du jour.jpg

element.attr("abs:src") 返回和上面一样的url

到目前为止,检索 url 没有问题,但是当我在下面的代码中提交此 url 时,它返回未找到文件(我从互联网上的示例中获取了此函数):

public Object fetch(String address) throws MalformedURLException,IOException {
 try {
   URL url = new URL(address);
   Object content = url.getContent();
   return content;
  } catch (Exception e) {
    return null;
  }
}

我认为问题在于 url 格式,因为当我在 google chrome 中获得图像的真实地址时:

http://www.mysite.com/d%C3%A9tail%20du%20jour.jpg

并在如下代码中提交: URL url = 新 URL("http://www.mysite.com/d%C3%A9tail%20du%20jour.jpg");

图片加载正确,那么如何从 JSoup 获取这个格式化的 url?

谢谢

【问题讨论】:

    标签: android url character jsoup


    【解决方案1】:

    您需要使用URLEncoder 作为从 JSoup 中提取的 url。

    类似:

    URL url = new URL(URLEncoder.encode(address));

    之间的空格将被替换为特殊字符值 %something

    【讨论】:

    • URLEncode.encode(myurl, "utf-8") 给我 "mysite.com/d%C3%A9tail+du+jour.jpg" 这不是我需要的正确的 url 看起来像 "mysite.com/d%C3%A9tail%20du%20jour.jpg"
    • 您是否尝试过其他字符集编码,例如 HTTP.ISO_8859_1 作为第二个参数?
    • with HTTP.ISO_8859_1 仍然给我 D%E9tail+du+jour.jpg 顺便说一下html页面的源代码表明charset=utf-8
    • 我发现了一个技巧,我认为通过将“+”替换为 %20 但我不知道这是否是正确的方法 URLDecoder.decode 将 url 转换为之前的状态而不用替换 %20解码前的“+”是不是很奇怪?
    猜你喜欢
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 2020-06-11
    • 1970-01-01
    • 1970-01-01
    • 2011-07-29
    • 1970-01-01
    • 2012-02-15
    相关资源
    最近更新 更多