Экранирование & в 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
.