вторник, 9 октября 2012 г.

Java, URL Encoding и пробелы.

Часто встречается задача: закодировать в URL Encoding строку с пробелами. Стандартный метод делает это не так, как хотелось бы.
java.net.URLEncoder.encode кодирует строку в соответствии со стандартом HTML 4.01, который предписывает заменять символ пробела на "+", а не на "%20", как предписывает RFC3986.
(Источник)

В Spring'е есть простое решение проблемы — класс org.springframework.web.util.UriUtils с методами для кодирования урлов и параметров. Они работают правильно.

Замечу, что если надо обработать не полный урл, а только один из параметров, следует использовать метод UriUtils.encodeQueryParam. Поскольку UriUtils.encodeURI для строки "2012:10:05", например, возвращает "2012:/10:05", видимо, по-особому интерпретируя первое двоеточие.

1 комментарий:

  1. Огромное спасибо. Долго искал то что мне поможет и вот нашел.

    ОтветитьУдалить