Часто встречается задача: закодировать в URL Encoding строку с пробелами. Стандартный метод делает это не так, как хотелось бы.
В Spring'е есть простое решение проблемы — класс org.springframework.web.util.UriUtils с методами для кодирования урлов и параметров. Они работают правильно.
Замечу, что если надо обработать не полный урл, а только один из параметров, следует использовать метод UriUtils.encodeQueryParam. Поскольку UriUtils.encodeURI для строки "2012:10:05", например, возвращает "2012:/10:05", видимо, по-особому интерпретируя первое двоеточие.
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", видимо, по-особому интерпретируя первое двоеточие.
Огромное спасибо. Долго искал то что мне поможет и вот нашел.
ОтветитьУдалить