【问题标题】:java.net.URLEncoder.encode encodes space as + but I need %20 [duplicate]java.net.URLEncoder.encode 将空间编码为 + 但我需要 %20 [重复]
【发布时间】:2013-08-21 19:26:37
【问题描述】:

正如标题所说:哪个编码器会给我%20而不是+的空间?我需要它的安卓。 java.net.URLEncoder.encode 给出+

【问题讨论】:

    标签: java android urlencode url-encoding


    【解决方案1】:

    Android 有它自己的 Uri 类,您可以使用它。

    例如

    String url = Uri.parse("http://www.google.com").buildUpon()
        .appendQueryParameter("q", "foo bar")
        .appendQueryParameter("xml", "<Hellö>")
        .build().toString();
    

    结果

    http://www.google.com?q=foo%20bar&amp;xml=%3CHell%C3%B6%3E

    Uri 使用 UTF-8 方案将给定字符串中的字符编码为“%”转义的八位字节。保留字母(“A-Z”、“a-z”)、数字(“0-9”)和未保留的字符(“_-!.~'()*”)不变。

    注意:只有_-.* 被URLEncoder 视为未保留字符。 !~'() 将转换为 %21%7E%27%28%29。

    【讨论】:

      【解决方案2】:

      你必须自己替换+。

      例子:

      System.out.println(java.net.URLEncoder.encode("Hello World", "UTF-8").replace("+", "%20"));
      

      更多内容请看这篇文章:

      URLEncoder not able to translate space character

      【讨论】:

        猜你喜欢
        • 2016-04-25
        • 1970-01-01
        • 2011-03-30
        • 2011-02-10
        • 1970-01-01
        相关资源
        最近更新 更多