Как говорится в заголовке: какой кодировщик дал бы мне пробел как %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"));
Подробнее об этом сообщении: