2010-02-04 3 views
7

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

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

+0

дать код - как вы помещаете «L & T» в адресную строку? – Bozho

ответ

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

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

L+%26+T 
+0

тот, у кого второй аргумент для кодировки символов? – Bozho

+0

ОК, мой комментарий неуместен, я удалю его – Rodrigo

1

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

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

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

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

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

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

0

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