2012-03-19 31 views
6

Necesito obtener una cadena url de NSString. Hago lo siguiente:Cadena NSStringByReplacingPercentEscapesUsingEncoding does't work

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

    NSString * eStr = [str stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

    NSLog(@"%@",eStr); 

El resultado es [email protected] Pero necesito i% 40gmail.com. reemplazar NSUTF8StringEncoding con NSASCIIStringEncoding no ayuda.

+0

supiste cómo reemplazar stringByReplacingPercentEscapesUsingEncoding? – user2924482

Respuesta

12

Está utilizando el método incorrecto. Esto hace lo contrario, traduciendo por ciento escapa a sus caracteres. Probablemente desee utilizar stringByAddingPercentEscapesUsingEncoding:.

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

Aparte de eso, parece que el carácter @ no se escapó por defecto. Luego, , como lo indica la documentación del método anterior, deberá usar CoreFoundation para lograr lo que desea.

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

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

NSLog(@"%@", eStr); 

CFRelease(eStr); 

Por favor, compruebe el documentation saber más acerca de la función que se utiliza y cómo para que se ajuste a sus necesidades.

+0

Esto es correcto. –

+0

No funciona para mí. Devuelve la misma cadena :( –

+0

@Romula De hecho, lo siento, actualicé la respuesta. – sidyll

Cuestiones relacionadas