2009-11-17 17 views
10

Wie URL-Codierung in NSURL?NSURL-Codierung in ObjC

Dank

+0

Es ist jetzt einfacher mit iOS 7: http://stackoverflow.com/questions/3423545/objective-c-iphone-percent-encode-a-string/20271177 # 20271177 –

Antwort

27

Sie können stringByAddingPercentEscapesUsingEncoding verwenden:

NSString* escapedUrlString = 
    [unescapedString stringByAddingPercentEscapesUsingEncoding: 
         NSUTF8StringEncoding]; 

Doch meiner Erfahrung ist diese Methode nicht ganz perfekt ist (in einigen reservierten Zeichen Handhabung), und in vielen Fällen musste ich nutzen die Variante:

NSString * escapedUrlString = 
    (NSString *)CFURLCreateStringByAddingPercentEscapes(
    NULL, 
    (CFStringRef)unescapedString, 
    NULL, 
    (CFStringRef)@"!*'();:@&=+$,/?%#[]", 
    kCFStringEncodingUTF8); 
+3

+1, aber mit einer Erinnerung, dass 'CFURLCreateStringByAddingPercentEscapes' eine Zeichenfolge mit einer +1 Retain-Anzahl zurückgibt, so müssen Sie es" freigeben ", wenn Sie fertig sind. –

+0

Sie haben meinen Tag @notnoop gespeichert –

6

stringByAddingPercentEscapesUsingEncoding: hat einige 0.123..

In Verbindung verwende ich gtm_stringByEscapingForURLArgument von Google Toolbox for Mac für URL-Argumente.

3

Das ist für mich gearbeitet:

NSString *response = [NSString stringWithContentsOfURL:[NSURL URLWithString:[url stringByAddingPercentEscapesUsingEncoding:STRING_ENCODING_IN_THE_SERVER]] 
                 encoding:STRING_ENCODING_IN_THE_SERVER 
                 error:&error];