2011-05-18 10 views
25

में अंतरिक्ष के स्थान पर% 20 डालने के लिए कैसे करें मेरे पास एक XML यूआरएल फ़ाइल है जिसमें सफेद रिक्त स्थान हैं जो मैं सफेद स्पेस को% 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())); 
+1

'URLEncoder.encode (मान," यूटीएफ -8 ") समाधान है। –

उत्तर

48

इस प्रयास करें:

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

सही, आसान और काम कर रहा है, बहुत बहुत धन्यवाद :) – cV2

+5

मुझे लगता है कि यह गलत दृष्टिकोण है। यूआरएल (मेजबान भाग को छोड़कर) यूआरएल-एन्कोडेड होना चाहिए ('URLEncoder.encode' का उपयोग करना)। ऐसा करने के बाद, आप '+' वर्णों को '% 20' से बदल सकते हैं। यदि आप 'URLEncoder.encode' का उपयोग नहीं करते हैं, तो जोखिम है कि URL में अन्य विशेष वर्ण समस्याएं पैदा कर सकते हैं। (ध्यान दें कि स्पेस कैरेक्टर का प्रतिनिधित्व करने के लिए '+' यूआरएल में पूरी तरह से मान्य है; आपको शायद '% 20' की भी आवश्यकता नहीं है।) –

+0

+1 समाधान के लिए धन्यवाद। इसने एक जादू की तरह काम किया! आपने मेरा दिन आदमी बचाया;) बहुत बहुत धन्यवाद;) – Sajmon

31

जब आप अपना यूआरएल बनाते हैं तो आपको पैरामीटर को एन्कोड करने के लिए URLEncoder का उपयोग करना चाहिए।

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

आप पहले से ही एक स्ट्रिंग या एक java.net.URL में पूरे यूआरएल है, तो आप क्वेरी हिस्सा हड़पने और जब तक प्रत्येक पैरामीटर मान URLEncoding के पुनर्निर्माण कर सकते हैं।

+1

यह सही तरीका है। यदि आप खुद को रेगेक्स का उपयोग कर रहे हैं या प्रतिस्थापित कर रहे हैं तो आप इसे गलत कर रहे हैं। –

+0

लेकिन सुनिश्चित करें कि यूआरएल यूआरएल के मेजबान भाग और यूआरएल के अंदर '/' अक्षर एन्कोड न करें। पूर्ण यूआरएल के एक सबस्ट्रिंग को आज़माएं या इसे बिल्ड प्रक्रिया में करें क्योंकि सूडोकोड एक स्ट्रिंग बिल्डर के साथ सुझाव दिया गया है। – DArkO

+0

अच्छी अवधारणा के लिए धन्यवाद – SRam

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

मुझे लगता है कि आप सभी रिक्त स्थान, सफेद ही नहीं बदलना चाहते हैं।

सबसे आसान तरीका

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

उपयोग करने के लिए लेकिन अगर आप यूआरएल में भी अन्य पात्रों पर विचार करना चाहिए है। समस्या "रिक्त स्थान + में परिवर्तित हो रही है" से बचने के लिए

उपयोग URLEncoder.encode के बजाय android.net.Uri.encode: sudocode की प्रतिक्रिया के लिए Recommended method for escaping HTML in Java

+1

से समाधान चाहते हैं कि क्या आप यूआरएल में नीले या लाल रिक्त स्थान को एन्कोड करना चाहते हैं? –

5

सिर्फ एक अतिरिक्त देखें। तो फिर तुम String.replaceAll() और उसके अधिक सुरुचिपूर्ण :)

StringBuilder query = new StringBuilder(); 
query.append("gallery="); 
query.append(android.net.Uri.encode(value, "UTF-8")); 
+1

सही उपयोग android.net.Uri.encode (मान, ": /") है, जहां दूसरा तर्क वर्णों की सूची है जिन्हें – Softec

+0

एन्कोड नहीं किया जाना चाहिए यह सबसे अधिक वोट दिया गया और चुना गया होना चाहिए। +1 –

1

एपीआई org.apache.commons.httpclient.util.URIUtil से URIUtil.encodePath विधि का उपयोग कर प्रयास करें से छुटकारा पाने के।

यह आपके लिए चाल करना चाहिए।

1

मैं एक सुझाव here जोड़ने जा रहा हूं। आप ऐसा कर सकते हैं जो बाहरी पुस्तकालयों को प्राप्त करने से बचाता है।