Как заменить на %20 в андроиде

Я выполняю функцию вызова службы в Android. В следующем URL-адресе (строка) мне нужно заменить " " (пробел) на %20

http://dli.ircms.in/complaint.php?complaintno=sarojini нагар/06022014/4

Я пытался

URl.replace(" ", "%20")
URl.replaceAll(" ", "%20")
URL sourceUrl = new URL(url);
url = URLDecoder.decode(url, "UTF-8");

но не меняется не знаю почему.

Помогите пожалуйста мне..


person user2085965    schedule 06.02.2014    source источник


Ответы (4)


С URLDecoder это не работает, потому что вам нужно кодировать, а не декодировать:

url = URLEncoder.encode(url, "UTF-8");

Для других опубликованных вами примеров вам необходимо переназначить строку:

url = url.replace(" ", "%20");
url = url.replaceAll(" ", "%20");

Как заметил Петтер, URLEncoder.encode добавит + вместо %20. Вот как работает URLEncoder, но вы можете использовать

url = URLEncoder.encode(url, "UTF-8").replace("+","%20");

чтобы он работал так, как вы хотите.

Другой вариант — использовать класс Uri:

String url = "http://dli.ircms.in/complaint.php";
url = Uri.parse(url).buildUpon().appendQueryParameter("complaintno","sarojini nagar/06022014/4").build().toString();

Результат:

http://dli.ircms.in/complaint.php?complaintno=sarojini%20nagar%2F06022014%2F4
person BackSlash    schedule 06.02.2014
comment
Да переназначил. но не меняется. - person user2085965; 06.02.2014
comment
@ user2085965 Это невозможно. Пожалуйста, опубликуйте обновленный код. - person BackSlash; 06.02.2014
comment
@user2085965 user2085965 Попробуйте сейчас, у меня работает (проверено на устройстве Android) - person BackSlash; 06.02.2014

вы должны использовать URLEncoder:

String url = URLEncoder.encode(url, "UTF-8");
person Blackbelt    schedule 06.02.2014

Если вы используете URL-адрес в виде строки, строка является неизменной, поэтому вам необходимо назначить замененную строку новой.

String url = theOriginalUrlString.replaceAll(" ", "%20");

Замена отражается в новой строке.

person Omoro    schedule 06.02.2014

Попробуй это:

String url = "http://test.com/this is a test";
System.out.println(url);
url = url.replace(" ", "%20");
System.out.println(url);

or:

String url = URLEncoder.encode(url, "UTF-8");

Следует кодировать, а не декодировать.

person João Lopes    schedule 06.02.2014