java.net.URLEncoder
закодирует один пробел с помощью +
.
scala> val encodedSpace = URLEncoder.encode(" ", "UTF-8")
encodedSpace: String = +
Однако, согласно этому doc W-3, разве он не должен быть закодирован с помощью %20
?
java.net.URLEncoder
закодирует один пробел с помощью +
.
scala> val encodedSpace = URLEncoder.encode(" ", "UTF-8")
encodedSpace: String = +
Однако, согласно этому doc W-3, разве он не должен быть закодирован с помощью %20
?
Из 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
. Prior является поведением по умолчанию.
Например:
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/