Кодирование URL с пробелами в Java работает некорректно - PullRequest
0 голосов
/ 06 августа 2020

Я пробую простую кодировку URL-адреса, которая должна быть выполнена для URL-адреса ниже:

https://example.org/v1/x/y/Quick Brown Fox/jumps/over/

Я использую приведенный ниже код:

String url = https://example.org/v1/x/y/Quick Brown Fox/jumps/over/;
url = UrlEncoder.encode(url,"UTF-8");

В идеале это должно обеспечивать вывод например -

https://example.org/v1/x/y/Quick%20Brown%20Fox/jumps/over/

, что является правильной кодировкой. Вместо этого он заменяет пробел на +

Используя JDK 11 - мне нужен% 20, потому что я использую Apache HTTP-клиент для отправки HTTP-запроса, а URI не принимает + в URL-адресе, где пробелы присутствуют.

1 Ответ

1 голос
/ 06 августа 2020

Вы можете использовать класс URI:

        URI uri = new URI("https", "//example.org/v1/x/y/Quick Brown Fox/jumps/over/", null);
        System.out.println(uri.toASCIIString()); // Should be escaped

Просто имейте в виду, что вам нужно обрабатывать URISyntaxException.

...