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

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

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

4 ответов


java.net.URLEncoder.encode("L & T", "utf8")

это выводит URL-кодировку, которая отлично подходит в качестве параметра GET:

L+%26+T

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

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

// Encoded
http://www.example.com?a=l%26t

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

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

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


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