In non-arc mode:
-(NSString *) encodetopercentescapestring: (NSString *) input{NSString *outputstr = (NSString *) Cfurlcreatestringbyaddingpercentescapes (Kcfallocatordefault, (Cfstrin GREF) input, NULL, (cfstringref)@"!* ' ();: @&=+$,/?%#[]", kCFStringEncodingUTF8); returnoutputstr;}-(NSString *) decodefrompercentescapestring: (NSString *) input{nsmutablestring*outputstr =[nsmutablestring Stringwithstring:input]; [Outputstr replaceoccurrencesofstring:@"+"withstring:@" "Options:nsliteralsearch Range:nsmakerange (0, [outputstr length])]; return[Outputstr stringbyreplacingpercentescapesusingencoding:nsutf8stringencoding];}
Arc Mode:
-(NSString *) encodetopercentescapestring: (NSString *) input{NSString* Outputstr = (__bridge NSString *) Cfurlcreatestringbyaddingpercentescapes ( NULL,/*Allocator*/(__bridge cfstringref) input, NULL,/ * Resolve the contained escape character*/(CFSTRINGREF)@"!* ' ();: @&=+$,/?%#[]", kCFStringEncodingUTF8); returnoutputstr;}-(NSString *) decodefrompercentescapestring: (NSString *) input{nsmutablestring*outputstr =[nsmutablestring Stringwithstring:input]; [Outputstr replaceoccurrencesofstring:@"+"withstring:@""Options:nsliteralsearch Range:nsmakerange (0, [outputstr length])]; return[Outputstr stringbyreplacingpercentescapesusingencoding:nsutf8stringencoding];}
IOS contains Chinese URL transcoding problem