【发布时间】:2015-10-15 05:12:19
【问题描述】:
java.net.URLEncoder 将使用+ 对单个空格进行编码。
scala> val encodedSpace = URLEncoder.encode(" ", "UTF-8")
encodedSpace: String = +
但是,根据这个 W-3 doc,它不应该用 %20 编码吗?
【问题讨论】:
标签: java url-encoding
java.net.URLEncoder 将使用+ 对单个空格进行编码。
scala> val encodedSpace = URLEncoder.encode(" ", "UTF-8")
encodedSpace: String = +
但是,根据这个 W-3 doc,它不应该用 %20 编码吗?
【问题讨论】:
标签: java url-encoding
来自文档 (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/
【讨论】: