2009-11-17 25 views
10

¿Cómo hacer codificación URL en NSURL?Codificación NSURL en ObjC

Gracias

+0

Es más fácil ahora con iOS 7: http://stackoverflow.com/questions/3423545/objective-c-iphone-percent-encode-a-string/20271177 # 20271177 –

Respuesta

27

Puede utilizar stringByAddingPercentEscapesUsingEncoding:

NSString* escapedUrlString = 
    [unescapedString stringByAddingPercentEscapesUsingEncoding: 
         NSUTF8StringEncoding]; 

Sin embargo, en mi experiencia, este método no es del todo perfecto (en el manejo de algunos caracteres reservados), y en muchos casos que necesitaba usar la variante:

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

+1, pero con un recordatorio de que 'CFURLCreateStringByAddingPercentEscapes' devuelve una cadena con un +1 retener conteo, por lo que debe' liberar' cuando haya terminado. –

+0

Has guardado mi día @notnoop –

3

Esto funcionó para mí:

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