2012-03-19 23 views
6

मुझे एनएसएसटींग से यूआरएल स्ट्रिंग प्राप्त करने की आवश्यकता है। मैं निम्नलिखित करता हूं:NSString stringByReplacingPercentEscapesUsingEncoding काम नहीं करता

NSString * str = [NSString stringWithString:@"[email protected]"]; 

    NSString * eStr = [str stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

    NSLog(@"%@",eStr); 

परिणाम [email protected] है। लेकिन मुझे i% 40gmail.com चाहिए। NSASCIIStringEncoding के साथ NSUTF8StringEncoding को प्रतिस्थापित करने में मदद नहीं करता है।

+0

आप यह पता लगाने कैसे stringByReplacingPercentEscapesUsingEncoding को बदलने के लिए किया था? – user2924482

उत्तर

12

आप गलत विधि का उपयोग कर रहे हैं। यह विपरीत है, प्रतिशत अनुवाद उनके पात्रों से बचता है। आप शायद stringByAddingPercentEscapesUsingEncoding: का उपयोग करना चाहते हैं।

NSString *str = @"[email protected]"; 
NSString *eStr = 
    [str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

इसके अलावा, लग रहा है @ चरित्र की तरह डिफ़ॉल्ट रूप से भाग निकले नहीं है। फिर, उपर्युक्त विधि के लिए प्रलेखन के रूप में इंगित करता है, आपको अपनी इच्छित चीज़ों को प्राप्त करने के लिए कोरफ़ाउंडेशन का उपयोग करना होगा।

NSString *str = @"[email protected]"; 

CFStringRef eStr = CFURLCreateStringByAddingPercentEscapes(
    kCFAllocatorDefault, 
    (CFStringRef)str, 
    NULL, 
    (CFStringRef)@"@", 
    kCFStringEncodingUTF8 
); 

NSLog(@"%@", eStr); 

CFRelease(eStr); 

समारोह का इस्तेमाल किया और कैसे यह आपकी आवश्यकताओं को बनाने के बारे में अधिक जानने के लिए documentation की जांच करें।

+0

यह सही है। –

+0

मेरे लिए काम नहीं करता है। एक ही स्ट्रिंग देता है :( –

+0

@Romula वास्तव में क्षमा करें, मैंने जवाब अपडेट किया। – sidyll

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