Ответ 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);
У меня есть 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()));
Попробуйте следующее:
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, вы должны использовать URLEncoder для кодирования параметров.
StringBuilder query = new StringBuilder();
query.append("gallery=");
query.append(URLEncoder.encode(value, "UTF-8"));
Если у вас уже есть весь URL-адрес в String или java.net.URL, вы можете захватить часть запроса и перестроить, а URLEncoding - каждое значение параметра.
только одно дополнение к ответу 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"));
Я думаю, вы хотите заменить все пробелы, а не только белые.
Самый простой способ - использовать
"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
.
Это должно сделать трюк для вас.
Я собираюсь добавить одно предложение здесь. Вы можете сделать это, чтобы избежать необходимости получать какие-либо внешние библиотеки.
Для тех, кому необходимо кодировать пробел в виде значения %20
вместо значения +
, используйте:
String encodedString = URLEncoder.encode(originalString,"UTF-8").replaceAll("\\+", "%20")