我有一个 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()));
试试这个:
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"));
如果您已经在字符串或 java.net.URL 中拥有整个 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));
我猜你想替换所有空格,而不仅仅是白色。
最简单的方法就是使用
"url_with_spaces".replaceAll(" ", "%20");
但是,您还应该考虑 URL 中的其他字符。请参阅在纯 Java 中转义 HTML 符号的推荐方法是什么?
String s = "my string";
s=s.replaceAll(" ", "%20");
对于需要将空格字符编码为
%20
值而不是 +
值的任何人,请使用:
String encodedString = URLEncoder.encode(originalString,"UTF-8").replaceAll("\\+", "%20")