J'ai un fichier URL xml dans lequel il y a des espaces blancs je veux remplacer les espaces blancs par% 20 .. comment faire ????
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()));
Essaye ça:
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);
Lorsque vous créez votre URL, vous devez utiliser RLEncoder pour coder les paramètres.
StringBuilder query = new StringBuilder();
query.append("gallery=");
query.append(URLEncoder.encode(value, "UTF-8"));
Si vous avez déjà l'intégralité de l'URL dans une chaîne ou un Java.net.URL, vous pouvez récupérer la partie de requête et reconstruire tout en URLEncodant chaque valeur de paramètre.
juste un ajout à la réponse de sudocode:
utilisez Android.net.Uri.encode au lieu de URLEncoder.encode pour éviter le problème de "conversion des espaces en +". Ensuite, vous vous débarrassez de String.replaceAll () et de son plus élégant :)
StringBuilder query = new StringBuilder();
query.append("gallery=");
query.append(Android.net.Uri.encode(value, "UTF-8"));
Je suppose que vous voulez remplacer tous les espaces, pas seulement le blanc.
la manière la plus simple est d'utiliser
"url_with_spaces".replaceAll(" ", "%20);
Cependant, vous devriez également considérer d'autres caractères dans l'url. Voir Méthode recommandée pour échapper au HTML en Java
String s = "my string";
s=s.replaceAll(" ", "%20");
Essayez d'utiliser URIUtil.encodePath
méthode depuis l'api org.Apache.commons.httpclient.util.URIUtil
.
Cela devrait faire l'affaire pour vous.
Pour toute personne qui a besoin que les caractères d'espace soient codés en %20
valeur au lieu d'un +
valeur, utilisez:
String encodedString = URLEncoder.encode(originalString,"UTF-8").replaceAll("\\+", "%20")