NSString stringByReplacingPercentEscapesUsingEncoding не работает - PullRequest
6 голосов
/ 19 марта 2012

Мне нужно получить строку URL-адреса из NSString. Я делаю следующее:

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

    NSString * eStr = [str stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

    NSLog(@"%@",eStr);

Результат i@gmail.com. Но мне нужно, чтобы я% 40gmail.com. замена NSUTF8StringEncoding на NSASCIIStringEncoding не помогает.

1 Ответ

12 голосов
/ 19 марта 2012

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

Пожалуйста, ознакомьтесь с документацией , чтобы узнать больше об используемой функции и как сделать так, чтобы он соответствовал вашим потребностям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...