Вы используете неправильный метод. Это наоборот, перевод процентов
убегает к своим персонажам. Вы, вероятно, хотите использовать
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);
Пожалуйста, ознакомьтесь с документацией , чтобы узнать больше об используемой функции и
как сделать так, чтобы он соответствовал вашим потребностям.