2009-03-30 14 views
5

पर यूआरएल में अवैध एनएसएसटींग के चरित्र के बारे में प्रश्न यूआरएल में मेरे कुछ http अनुरोध में 'स्पेस' है, लेकिन यह आईफोन द्वारा मान्यता प्राप्त नहीं है। यूआरएल में 'स्पेस' होने पर मुझे 'स्पेस' को '% 20' में बदलना होगा। अब मुझे सर्वर द्वारा सर्वर पर टाइप किया गया एक संदेश भेजना है और इसमें उपयोगकर्ता के रूप में कई 'रिक्त स्थान' हो सकते हैं। ऐसा लगता है कि मुझे उन्हें सभी को बदलना है। (StringByReplacingOccurrencesOfString)आईफोन

'स्पेस' से '% 20' में कनवर्ट करें जिसे मैं कभी-कभी ढूंढता हूं। मेरा सवाल यह है कि एनएसएसटींग के अन्य पात्रों का सीधे आईफोन पर यूआरएल द्वारा उपयोग नहीं किया जा सकता है?

उत्तर

19

मुझे लगता है कि यह एक बेहतर तरीका है:

NSString* escapedUrl = [originalUrl 
stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

आप को समझने के लिए URL एन्कोडिंग काम करता है चाहते हैं, इस URL पर एक नज़र डालें।

1

पूर्ण गोरी विवरण के लिए RFC 2396 देखें। निम्न वर्णों भाग निकले किया जाना चाहिए:

{ } | \^[ ] `:

 
Control characters (ASCII 00-1F and 7F) 
Space 
< 
> 
# 
% 
" 

निम्न वर्णों से बचने क्योंकि कुछ प्रवेश द्वार और अन्य परिवहन एजेंट कभी कभी इस तरह के पात्रों को संशोधित करने के लिए जाने जाते हैं, या वे डिलीमीटर के रूप में उपयोग किया जाता है के बिना उपयोग करने के लिए मूर्ख हैं