java.net.URLEncoder
会使用+
对单个空格进行编码。
scala> val encodedSpace = URLEncoder.encode(" ", "UTF-8")
encodedSpace: String = +
但是,根据这个W-3 doc,不应该使用%20
进行编码吗?
答案 0 :(得分:0)
来自DOCS(http://www.w3.org/TR/html4/interact/forms.html#h-17.13.4):
application / x-www-form-urlencoded
这是默认内容类型。使用此内容类型提交的表单必须按如下方式编码:
转义控件名称和值。空格字符被替换
按+', 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')。
控件名称/值按其出现的顺序列出
文献。该名称与=' and name/value
pairs are separated from each other by
&'
您必须将其从+
替换为%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/