Экранирование & в URL - PullRequest
       12

Экранирование & в URL

9 голосов
/ 04 февраля 2010

Я использую jsps, и в моем URL-адресе у меня есть значение для переменной, например, сказать "L & T" Теперь, когда я пытаюсь получить значение для него с помощью request.getParameter, я получаю только «L». Он распознает «&» как разделитель и, следовательно, не рассматривается как целая строка.

Как мне решить эту проблему?

Ответы [ 4 ]

16 голосов
/ 04 февраля 2010
java.net.URLEncoder.encode("L & T", "utf8")

это выводит кодированный URL, который подходит как параметр GET:

L+%26+T
1 голос
/ 04 февраля 2010

Вам необходимо «закодировать URL» параметры, чтобы избежать этой проблемы. Формат строки запроса URL: ...?<name>=<value>&<name>=<value>&<etc> Все <name> s и <value> s должны быть закодированы в URL, что в основном означает преобразование всех символов, которые могут быть неправильно интерпретированы (например, &) в% -escaped значения. Смотрите эту страницу для получения дополнительной информации: http://www.w3schools.com/TAGS/ref_urlencode.asp

Если вы генерируете URL проблемы с Java, используйте этот метод: String str = URLEncoder.encode(input, "UTF-8");

Генерация URL в другом месте (некоторые шаблоны или JS или необработанная разметка), вам нужно исправить проблему в источнике.

1 голос
/ 04 февраля 2010

Буквенный амперсанд в URL должен быть закодирован как %26

// Your URL
http://www.example.com?a=l&t

// Encoded
http://www.example.com?a=l%26t
0 голосов
/ 23 ноября 2017

Вы можете использовать UriUtils#encode(String source, String encoding) из Spring Web . Этот служебный класс также предоставляет средства для кодирования только некоторых частей URL, например UriUtils#encodePath.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...