Кодировка NSURL в ObjC

Как сделать кодировку URL в NSURL?

Спасибо

Ответ 1

Вы можете использовать stringByAddingPercentEscapesUsingEncoding:

NSString* escapedUrlString =
   [unescapedString stringByAddingPercentEscapesUsingEncoding:
                        NSUTF8StringEncoding];

Однако, по моему опыту, этот метод не совсем совершенен (при обработке некоторых зарезервированных символов), и во многих случаях мне нужно было использовать вариант:

 NSString * escapedUrlString =
  (NSString *)CFURLCreateStringByAddingPercentEscapes(
    NULL,
    (CFStringRef)unescapedString,
    NULL,
    (CFStringRef)@"!*'();:@&=+$,/?%#[]",
    kCFStringEncodingUTF8 );

Ответ 2

stringByAddingPercentEscapesUsingEncoding: имеет некоторые проблемы с аргументами URL.

В сочетании я использую gtm_stringByEscapingForURLArgument из Google Toolbox для Mac для аргументов URL.

Ответ 3

Это сработало для меня:

NSString *response = [NSString stringWithContentsOfURL:[NSURL URLWithString:[url  stringByAddingPercentEscapesUsingEncoding:STRING_ENCODING_IN_THE_SERVER]] 
                                                      encoding:STRING_ENCODING_IN_THE_SERVER 
                                                         error:&error];