NSString stringByReplacingPercentEscapesUsingEncoding不起作用

时间:2012-03-19 17:18:40

标签: objective-c nsstring

我需要从NSString获取url字符串。我做了以下事情:

   NSString * str = [NSString stringWithString:@"i@gmail.com"];

    NSString * eStr = [str stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

    NSLog(@"%@",eStr);

结果是i@gmail.com。但我需要i%40gmail.com。用NSASCIIStringEncoding替换NSUTF8StringEncoding没有帮助。

1 个答案:

答案 0 :(得分:12)

您使用的是错误的方法。这恰恰相反,翻译百分比 逃避他们的角色。你可能想用 stringByAddingPercentEscapesUsingEncoding:

NSString *str  = @"i@gmail.com";
NSString *eStr =
    [str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

除此之外,默认情况下@字符看起来没有被转义。然后, 正如上述方法的文档所指出的那样,您需要使用 CoreFoundation实现您想要的目标。

NSString *str  = @"i@gmail.com";

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

NSLog(@"%@", eStr);

CFRelease(eStr);

请检查documentation以了解有关所用功能的更多信息 如何使其符合您的需求。