java.net.URLEncoder #coding for Whitespace

时间:2015-07-24 13:39:22

标签: java url-encoding

java.net.URLEncoder会使用+对单个空格进行编码。

scala> val encodedSpace = URLEncoder.encode(" ", "UTF-8")
encodedSpace: String = +

但是,根据这个W-3 doc,不应该使用%20进行编码吗?

1 个答案:

答案 0 :(得分:0)

来自DOCS(http://www.w3.org/TR/html4/interact/forms.html#h-17.13.4):

application / x-www-form-urlencoded

这是默认内容类型。使用此内容类型提交的表单必须按如下方式编码:

  1. 转义控件名称和值。空格字符被替换 按+', and then reserved characters are escaped as described in [RFC1738], section 2.2: Non-alphanumeric characters are replaced by %HH',百分号和两个十六进制数字代表 字符的ASCII码。换行符表示为" CR LF" 对(即'%0D%0A')。

  2. 控件名称/值按其出现的顺序列出 文献。该名称与=' and name/value pairs are separated from each other by&'

  3. 的值分开

    您必须将其从+替换为%20。先前是默认行为。

    例如:

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

    以上是application / x-www-form-urlencoded的典型案例。

    摘要:

    multipart/form-data使用MIME encoding

    application/x-www-form-urlencoded使用+

    Properly encoded URIs使用%20

    获取提交:

    http://www.bing.com/search?q=hello+world

    名称为

    的空间资源

    http://camera.phor.net/cameralife/folders/2012/2012-06%20Pool%20party/