web-dev-qa-db-fra.com

comment insérer% 20 à la place de l'espace dans android

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()));
32
SRam

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

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.

34
sudocode

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"));
10
voghDev

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

3
bart
String s = "my string";
s=s.replaceAll(" ", "%20");
2
djg

Essayez d'utiliser URIUtil.encodePath méthode depuis l'api org.Apache.commons.httpclient.util.URIUtil.

Cela devrait faire l'affaire pour vous.

1
Paul John

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")
1
TheIT