Java.net.URLEncoder.encode кодирует пространство как +, но мне нужно %20

Как говорится в заголовке: какой кодировщик дал бы мне пробел как %20, а не +? Мне нужно это для Android. java.net.URLEncoder.encode дает +

Ответ 1

У Android есть собственный класс Uri, который вы могли бы использовать.

например.

String url = Uri.parse("http://www.google.com").buildUpon()
    .appendQueryParameter("q", "foo bar")
    .appendQueryParameter("xml", "<Hellö>")
    .build().toString();

приводит к

http://www.google.com?q=foo%20bar&xml=%3CHell%C3%B6%3E

Uri Кодирует символы в данной строке как "%" - экранированные октеты, используя схему UTF-8. Листовые буквы ( "A-Z", "a-z" ), цифры ( "0-9" ) и незарезервированные символы ( "_-!. ~ '() *" ) нетронутыми.

Примечание: только _-.* считаются незаслуженными символами на URLEncoder. !~'() преобразуется в %21%7E%27%28%29.