उद्देश्य-सी : के लिए
NSString *str = ...; // some URL
NSCharacterSet *set = [NSCharacterSet URLHostAllowedCharacterSet];
NSString *result = [str stringByAddingPercentEncodingWithAllowedCharacters:set];
NSUTF8StringEncoding के लिए कहां सेट करें?
छह URL घटकों और सब-कमर्स के लिए पूर्वनिर्धारित वर्ण सेट हैं जो प्रतिशत एन्कोडिंग की अनुमति देते हैं। इन चरित्र सेटों को पारित कर दिया जाता है -stringByAddingPercentEncodingWithAllowedCharacters:
।
// Predefined character sets for the six URL components and subcomponents which allow percent encoding. These character sets are passed to -stringByAddingPercentEncodingWithAllowedCharacters:.
@interface NSCharacterSet (NSURLUtilities)
+ (NSCharacterSet *)URLUserAllowedCharacterSet;
+ (NSCharacterSet *)URLPasswordAllowedCharacterSet;
+ (NSCharacterSet *)URLHostAllowedCharacterSet;
+ (NSCharacterSet *)URLPathAllowedCharacterSet;
+ (NSCharacterSet *)URLQueryAllowedCharacterSet;
+ (NSCharacterSet *)URLFragmentAllowedCharacterSet;
@end
पदावनत संदेश कहते हैं (जोर मेरा):
इसके बजाय stringByAddingPercentEncodingWithAllowedCharacters (_ :) का उपयोग करें, जो हमेशा अनुशंसित UTF-8 एन्कोडिंग का उपयोग करता है , और जो प्रत्येक URL घटक या उपसमुदाय के बाद से किसी विशिष्ट URL घटक या उपसंकेत के लिए एन्कोड करता है, जो वर्ण मान्य हैं के लिए अलग नियम हैं।
तो आपको केवल NSCharacterSet
तर्क के रूप में एक पर्याप्त आपूर्ति करने की आवश्यकता है । सौभाग्य से, URL के लिए एक बहुत ही आसान वर्ग विधि है जिसे URLHostAllowedCharacterSet
आप इस तरह से उपयोग कर सकते हैं:
NSCharacterSet *set = [NSCharacterSet URLHostAllowedCharacterSet];
हालांकि, जागरूक रहें:
यह विधि किसी URL घटक या उप-कंपोनेंट स्ट्रिंग को प्रतिशत-एन्कोड करने के उद्देश्य से है, संपूर्ण URL स्ट्रिंग नहीं।
NSURLComponents
, जो आपके लिए प्रतिशत-एन्कोडिंग को संभाल सकता है।