Не попадайте в прерывание не документирования Вашего кода! это, я думаю, один из советов, о котором легко забывают, потому что, эй Вы записали можение себя так, необходимо ли знать то, что это делает, правильно?... неправильно! просто заберите один из своих проектов прошлого года и выясните, как вещи работали, не используя документации вообще, это похоже на чтение кого-то еще (плохой) код.
я всегда поощряю меня использовать стандарт стиль документации, как javadoc для Java или эквивалент для.NET в коде, но действительно любой вид документации не лучше тогда ни один вообще...
Данные формы (для GET или POST) обычно кодируется как application / x-www-form-urlencoded
: это указывает +
для пробелов.
URL-адреса кодируются как RFC 1738 , который определяет % 20
.
Теоретически я думаю, что у вас должно быть% 20 перед ?
и + после:
example.com/foo%20bar?foo+bar
Согласно W3C (и они являются официальным источником по этим вещам), пробел в запросе Строка (и только в строке запроса) может быть закодирована как «% 20
» или « +
». Из раздела «Строки запроса» в разделе «Рекомендации»:
В строке запроса знак «плюс» зарезервирован как сокращенное обозначение для пробела. Следовательно, действительные знаки плюса необходимо кодировать. Этот метод использовался для облегчения передачи URI запросов в системах, в которых не допускались пробелы.
Согласно разделу 3.4 RFC2396 , который является официальной спецификацией URI в целом, компонент «запроса» является Зависит от URL:
3.4. Компонент запроса компонент зависит от URL:
3.4. Компонент запроса компонент зависит от URL:
3.4. Компонент запроса Компонент запроса - это строка информации, которую должен интерпретировать ресурс.
query = * uric
Внутри компонента запроса символы ";", "/", "?", ":", "@", "&", "=", "+", "," и "$" зарезервированы.
Следовательно, это ошибка в другом программном обеспечении, если оно не принимает URL-адреса с пробелами в строке запроса, закодированной как "
+
"символов.Что касается третьей части вашего вопроса, один способ (хотя и немного уродливый) исправить вывод из
URLEncoder.encode ()
- это затем ] callreplaceAll ("\\ +", "% 20")
для возвращаемого значения.
Это не должно иметь значения, как если бы вы закодировали письмо A as% 41.
Однако, если вы имеете дело с системой, которая не распознает одну форму, кажется, что вам просто придется дать ей то, что она ожидает, независимо от того, что говорится в «спецификации» .
Вы можете использовать и то, и другое - что означает, что большинство людей выбирают «+», поскольку он более удобочитаемый.