как вставить %20 вместо пробела в android

У меня есть XML-файл URL, в котором есть пробелы, которые я хочу заменить пробелами %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()));

7 ответов


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

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);

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

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

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


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

используйте android.сеть.Ури.кодируйте вместо URLEncoder.кодируйте, чтобы избежать проблемы" пробелы преобразуются в+". Тогда ты избавишься от веревки.replaceAll () и его более элегантный:)

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

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

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

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

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


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

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

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


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