web-dev-qa-db-ja.com

androidのスペースの代わりに%20を挿入する方法

空白が%20で置き換えたい空白があるxml URLファイルがあります。これを行う方法????

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

これを試して:

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

URLを作成するときは、 RLEncoder を使用してパラメーターをエンコードする必要があります。

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

StringまたはJava.net.URLにURL全体が既にある場合は、各パラメーター値をURLEncodingしながらクエリ部分を取得して再構築できます。

34
sudocode

sudocodeの応答に1つだけ追加します。

「スペースが+に変換される」問題を回避するために、URLEncoder.encodeの代わりにAndroid.net.Uri.encodeを使用します。次に、String.replaceAll()とそのよりエレガントな:)を取り除きます

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

白だけでなく、すべてのスペースを置き換えたいと思います。

最も簡単な方法は

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

ただし、URL内の他の文字も考慮する必要があります。 JavaでHTMLをエスケープするための推奨方法 を参照してください

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

URIUtil.encodePath APIからのメソッドorg.Apache.commons.httpclient.util.URIUtil

これはあなたのためのトリックを行う必要があります。

1
Paul John

スペース文字を%20値ではなく+値としてエンコードする必要がある場合は、次を使用します。

String encodedString = URLEncoder.encode(originalString,"UTF-8").replaceAll("\\+", "%20")
1
TheIT