Вам понадобится плагин для компилятора проектора. https://github.com/non/kind-projector
Они действительно дураки. Если вы посмотрите на RFC 3986 Приложение A, вы увидите, что «пространство» просто не упоминается нигде в грамматике для определения URL-адреса. Поскольку это не упоминается нигде в грамматике, единственный способ кодировать пространство - это процентное кодирование (%20
).
На самом деле RFC даже утверждает, что пробелы являются разделителями и их следует игнорировать:
В некоторых случаях может потребоваться добавить дополнительные пробелы (пробелы, разрывы строк, вкладки и т. д.), чтобы разбить длинный URI на строки. Пробел должен игнорироваться при извлечении URI.
и
Для обеспечения надежности программное обеспечение, которое принимает пользовательский URI, должно попытаться распознать и удалить оба разделители и встроенные пробелы.
Любопытно, что использование
+
в качестве кодирования пространства не упоминается в RFC, хотя оно зарезервировано как суб-делиметр. Я подозреваю, что его использование либо просто конвенции, либо связано с другим RFC (возможно, HTTP).
+
не переводится в пробел (или наоборот) любой частью процесса HTTP-запроса в общем случае. Однако он преобразуется в пространство, когда встречается как значение параметра в приложении «application / x-www-form-urlencoded». строку запроса и часто предпочитаемую программным обеспечением браузера над %20
, для краткости, когда такие строки запросов добавляются для запроса URI. Конечно, HTTP-сервер также может рассматривать обработку +
как эквивалентную пробелу в путях URI, но это не указано стандартом.
– Mark Reed
19 February 2013 в 06:55
Информация есть, я думаю, частично прав:
Это неверно. URL может использовать пробелы. Ничто не определяет, что пространство заменяется знаком +.
blockquote>Как вы отметили, URL-адрес НЕ может использовать пробелы. Запрос HTTP будет завинчен. Я не уверен, где определен
+
, хотя%20
является стандартным.
%20
не является пространством (очевидно), но представляет собой пространство. – Gumbo 26 March 2011 в 14:5020
после второго%
. – ArtOfWarfare 8 October 2013 в 16:22