【问题标题】:Chrome: A html space is replacing %20 to %2520 [duplicate]Chrome:一个 html 空间正在将 %20 替换为 %2520 [重复]
【发布时间】:2016-04-04 03:38:02
【问题描述】:

我正在尝试从网页获取值,并获取我在不同值之间放置 %20 的值。但是 chrome 正在将 %20 替换为 %2520,因此我没有得到正确的值。

例如:我正在尝试读取 url 的值:

https://..../place?action=list&&device=359299059228937&q=1110%201113%201175%201114%201115%201116%201111%201117%201123%201452%201112%201121%201120%201119%201122

当我按下回车键时,%20 会自动被 %2520 替换。

https://..../place?action=list&&device=359299059228937&q=1110%25201113%25201175%25201114%25201115%25201116%25201111%25201117%25201123%25201452%25201112%25201121%25201120%25201119%25201122

我在很多帖子中搜索了这个问题,但没有找到我的解决方案。

当我尝试阅读以下网址时:

https://..../place?action=list&&device=359299059228937&q=11101113 1175 1114 1115 1116 1111 1117 1123 1452 1112 1121 1120 1119 1122

然后它也将“”(空格)转换为 %2520 见下文:

https://..../place?action=list&&device=359299059228937&q=1110%25201113%25201175%25201114%25201115%25201116%25201111%25201117%25201123%25201452%25201112%25201121%25201120%25201119%25201122

请帮忙。

【问题讨论】:

  • 我的建议,使用不同的分隔符,例如 -。或者避免双重编码 URI。
  • 这不是 Java 或 Android 问题。这也不是一个真正的 http 或 get 问题——这实际上是一个 Chrome 问题。也就是说,我无法使用httpbin.org/get?q=a%20b 重现此内容。该页面显示 arg q 的值为 a b,这是我所期望的 - 并且与 Chrome 将 % 替换为 %25 时的结果不同。
  • 但它以前运行良好..我不知道为什么它今天没有运行@uma
  • 我也看过那个帖子,但没有帮助@Uma
  • 我现在应该做什么@yshavit

标签: java android http get


【解决方案1】:

不幸的是 %25 是 % 字符的代码,因此不知何故您的 %20 没有正确编码。您可以尝试查找 %20 并将其替换为实际空格。我知道修复在其他场合也有效。否则,请考虑使用链接缩短器作为解决方法。

【讨论】:

  • 我已经尝试过,但简单的空格也被转换为 %2520
【解决方案2】:

您不想在 URL 中包含 %20,否则它确实会被替换为 %2520。

对我有用的是创建一个 URI 并将其设置为包含所需的 URL,然后从 URI 创建一个 URL。执行此操作时,请勿使用 %20,请使用文字空格。之后,从 URI 创建一个 URL,并使用 toExternalForm 方法输出 URL。

例如:

    URI uri = null;

    try {
        uri = new URI(
                "http",
                "search.barnesandnoble.com",
                "/booksearch/first book.pdf",
                null);
        URL url = uri.toURL();
        // The content TextView is what I used to test the output
        content.setText(url.toExternalForm());
    } catch (URISyntaxException e) {
        e.printStackTrace();
    } catch (MalformedURLException e) {
        e.printStackTrace();
    }

这在 Android 和 Java 平台上对我有用。

【讨论】:

  • 即使是简单的空格也会被转换成%2520
  • 这个确切的代码对我有用。您在什么语言和环境中工作?你能发布一些你的代码吗?
猜你喜欢
  • 2013-04-11
  • 2017-01-21
  • 1970-01-01
  • 2018-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-29
相关资源
最近更新 更多