2012-01-01 10 views
7

मुझे स्ट्रिंगबैडिंगपर्सेंटएस्केप्स से स्विच करना पड़ा है, जो CFURLCreateStringByAddingPercentEscapes पर एन्कोडिंग है क्योंकि यह प्रश्न चिह्न (?) से नहीं बचता है। मैं उत्सुक वास्तव में क्या यह बच करता हूँ, और आंशिक एस्केपिंग आरएफसी बनाम 3986.स्ट्रिंग ByAddingPercentEscapesUsingEncoding से बचने वाले वर्ण क्या हैं?

उत्तर

1

कुछ अच्छी श्रेणियों सिर्फ करने के लिए बनाया गया है के पीछे तर्क है कि तुम क्या जरूरत है: http://iosdevelopertips.com/networking/a-better-url-encoding-method.html http://www.cocoanetics.com/2009/08/url-encoding/

छोड़ने के लिए तर्क कुछ वर्ण बाहर हैं ... कहने के अलावा कि कार्य की परिभाषा है: Returns a representation of the receiver using a given encoding to determine the percent escapes necessary to convert the receiver into a legal URL string.

पूरी तरह से सही होने के लिए, + और & एक यूआरएल के भीतर कानूनी पात्र हैं, जबकि एक स्थान नहीं है। इसलिए विधि सही जगह से बच जाएगी, लेकिन + और & बरकरार रहती है।

आरएफसी 2396 http://www.ietf.org/rfc/rfc2396.txt पढ़ना - आरक्षित और अनारक्षित वर्णों का एक सेट परिभाषित किया गया है। मेरा अनुमान है कि इन वर्णों में से कोई भी स्ट्रिंग द्वारा नहीं बच रहा है। AddingPercentEscapesUsingEncoding।

+0

अब मुझे उस दस्तावेज़ को पढ़ने के लिए बस कुछ मिनट चाहिए ... :) –

5

CFStringRef का उपयोग करते समय रूपांतरणों पर स्मृति को रिसाव न करने से सावधान रहें। लैटिन वर्णों और अन्य लोगों के साथ काम करने के लिए मैं यहां आया हूं। मैं अपने पैरामीटर से बचने के लिए इसका उपयोग करता हूं, न कि संपूर्ण यूआरएल। आपके उपयोग के मामले के आधार पर आप "escapeChars"

CFStringRef escapeChars = (CFStringRef)@"%;/?¿:@&=$+,[]#!'()*<>¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ \"\n"; 

NSString *encodedString = (__bridge_transfer NSString *) CFURLCreateStringByAddingPercentEscapes(NULL, (__bridge_retained CFStringRef) url, NULL, escapeChars, kCFStringEncodingUTF8); 

मुझे आशा है कि इस मदद करता है से जोड़ सकते हैं या पात्रों को हटाने की जरूरत हो सकती है।

संबंधित मुद्दे