2012-03-19 48 views
6

我需要从NSString获取url字符串。我做了以下几点:NSString stringByReplacingPercentEscapesUsingEncoding does not t

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

    NSString * eStr = [str stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

    NSLog(@"%@",eStr); 

结果是[email protected]。但我需要我%40gmail.com。用NSASCIIStringEncoding替换NSUTF8StringEncoding并没有帮助。

+0

你弄清楚如何替换stringByReplacingPercentEscapesUsingEncoding? – user2924482 2017-04-27 21:22:30

回答

12

您正在使用错误的方法。这恰恰相反,将百分比 转义为他们的角色。您可能要使用 stringByAddingPercentEscapesUsingEncoding:

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

除此之外,看起来像@角色默认情况下不会逃脱。然后, 作为上述方法的文档指出,你需要使用 CoreFoundation来实现你想要的。

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

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

NSLog(@"%@", eStr); 

CFRelease(eStr); 

请检查documentation更多地了解 如何使它适合您的需要使用的功能和。

+0

这是正确的。 – 2012-03-19 17:24:47

+0

不适合我。返回相同的字符串:( – 2012-03-19 17:29:52

+0

@Romula确实,对不起,我更新了答案。 – sidyll 2012-03-19 17:54:07