如何在android中插入%20代替空格

问题描述 投票:0回答:8

我有一个 xml URL 文件,其中有空格,我想用 %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()));
java android urlencode
8个回答
55
投票

试试这个:

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

35
投票

构建 URL 时,您应该使用 URLEncoder 对参数进行编码。

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

如果您已经在字符串或 java.net.URL 中拥有整个 URL,您可以抓取查询部分并在对每个参数值进行 URLEncoding 时进行重建。


23
投票

仅对 sudocode 响应进行一项补充:

使用

android.net.Uri.encode
而不是
URLEncoder.encode
以避免“空格转换为 +”问题。然后你去掉了
String.replaceAll()
,它就更优雅了:)

StringBuilder query = new StringBuilder();
query.append("gallery=");
query.append(android.net.Uri.encode(value));

4
投票

我猜你想替换所有空格,而不仅仅是白色。

最简单的方法就是使用

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

但是,您还应该考虑 URL 中的其他字符。请参阅在纯 Java 中转义 HTML 符号的推荐方法是什么?


3
投票
String s = "my string";
s=s.replaceAll(" ", "%20");

3
投票

对于需要将空格字符编码为

%20
值而不是
+
值的任何人,请使用:

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

1
投票

尝试使用 api URIUtil.encodePath

中的 
org.apache.commons.httpclient.util.URIUtil
 方法。

这应该对你有用。


0
投票

您可以使用

android.net.Uri parse()
方法对字符串进行编码。例如:

    String geoUri = Uri.encode("1st & Pike, Seattle");
  
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.