Как говорится в заголовке: какой кодировщик дал бы мне пробел как %20, а не +? Мне нужно это для Android. java.net.URLEncoder.encode дает +
Java.net.URLEncoder.encode кодирует пространство как +, но мне нужно %20
Ответ 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.
Ответ 2
Вы должны сами заменить +.
Пример:
System.out.println(java.net.URLEncoder.encode("Hello World", "UTF-8").replace("+", "%20"));
Подробнее об этом сообщении: