Подтвердить что ты не робот

Как вставить %20 ​​вместо места в android

У меня есть URL-адрес xml, в котором есть пробелы, я хочу заменить пробелы %20.. как это сделать????

SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();

/** Send URL to parse XML Tags */
URL sourceUrl = new URL(
                "http://www.arteonline.mobi/iphone/output.php?gallery=MALBA%20-%20MUSEO%20DE%20ARTE%20LATINOAMERICANO%20DE%20BUENOS%20AIRES");

XMLHandlerartistspace myXMLHandler = new XMLHandlerartistspace();
xr.setContentHandler(myXMLHandler);
xr.parse(new InputSource(sourceUrl.openStream()));
4b9b3361

Ответ 1

Попробуйте следующее:

String temp = http://www.arteonline.mobi/iphone/output.php?gallery=MALBA%20-%20MUSEO%20DE%20ARTE%20LATINOAMERICANO%20DE%20BUENOS%20AIRES

temp = temp.replaceAll(" ", "%20");
URL sourceUrl = new URL(temp);

Ответ 2

Когда вы создаете свой URL, вы должны использовать URLEncoder для кодирования параметров.

StringBuilder query = new StringBuilder();
query.append("gallery=");
query.append(URLEncoder.encode(value, "UTF-8"));

Если у вас уже есть весь URL-адрес в String или java.net.URL, вы можете захватить часть запроса и перестроить, а URLEncoding - каждое значение параметра.

Ответ 3

только одно дополнение к ответу sudocode:

используйте android.net.Uri.encode вместо URLEncoder.encode, чтобы избежать проблем с "преобразованием пробелов в +". Затем вы избавляетесь от String.replaceAll() и более изящны:)

StringBuilder query = new StringBuilder();
query.append("gallery=");
query.append(android.net.Uri.encode(value, "UTF-8"));

Ответ 4

Я думаю, вы хотите заменить все пробелы, а не только белые.

Самый простой способ - использовать

"url_with_spaces".replaceAll(" ", "%20);

Однако вы должны учитывать и другие символы в URL-адресе. См. Рекомендуемый метод экранирования HTML в Java

Ответ 5

String s = "my string";
s=s.replaceAll(" ", "%20");

Ответ 6

Попробуйте использовать URIUtil.encodePath метод из api org.apache.commons.httpclient.util.URIUtil.

Это должно сделать трюк для вас.

Ответ 7

Я собираюсь добавить одно предложение здесь. Вы можете сделать это, чтобы избежать необходимости получать какие-либо внешние библиотеки.

Ответ 8

Для тех, кому необходимо кодировать пробел в виде значения %20 вместо значения +, используйте:

String encodedString = URLEncoder.encode(originalString,"UTF-8").replaceAll("\\+", "%20")