как вставить% 20 ​​вместо места в андроид - PullRequest
31 голосов
/ 18 мая 2011

У меня есть XML-файл 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()));

Ответы [ 7 ]

52 голосов
/ 18 мая 2011

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

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);
34 голосов
/ 18 мая 2011

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

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

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

9 голосов
/ 18 октября 2013

только одно дополнение к ответу 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"));
3 голосов
/ 18 мая 2011

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

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

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

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

2 голосов
/ 18 мая 2011
String s = "my string";
s=s.replaceAll(" ", "%20");
1 голос
/ 01 мая 2019

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

String encodedString = URLEncoder.encode(originalString,"UTF-8").replaceAll("\\+", "%20")
1 голос
/ 22 января 2014

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

Это должно помочь тебе.

...