NSURL является либо нулевой, либо сбивающей с толку строкой - PullRequest
0 голосов
/ 02 марта 2012

У меня есть URL с некоторыми "специальными" символами, такими как кавычки. Когда я попробую это:

NSURL *url = [NSURL URLWithString:@"http://someurl/%22sometext%22"];

URL-адрес является нулевым.

Когда я пытаюсь это сделать:

NSURL *url = [NSURL URLWithString:[@"http://someurl/%22sometext%22" stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

У меня такой ужасный вывод:

{тип = 15, строка = http://someurl/%22sometext%22, кодировка = 134217984, база = (ноль)}

Кто-нибудь может мне помочь, пожалуйста?

1 Ответ

1 голос
/ 02 марта 2012

Не кодируйте это самостоятельно прежде, например. NSURL *url = [NSURL URLWithString: [@"http://someurl/\"sometext\"" stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]]; работает.

Но для правильного кодирования URL используйте другие функции:

- (NSString*) encodeString: (NSString*) string
{
    NSString* result = (NSString*) CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)string, NULL, CFSTR("% '\"?=&+<>;:-"), kCFStringEncodingUTF8);
    return [result autorelease];
}
...