NSURL is null while NSString is correct в Objective-C

У меня есть NSString, содержащий url, и когда я выделяю NSURL с NSString, NSURL выдает (null). Это происходит потому, что в url есть некоторые недопустимые символы, которые NSURL не может прочитать без кодирования NSString, содержащего url.

NSString *u = [incomingUrlString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

NSURL *url = [NSURL URLWithString:u];

NSLog(@"INCOMINGURLSTRING: %@" , u);
NSLog(@"URL: %@" , url);

Вывод:

 INCOMINGURLSTRING: /url/path/fileName_blå.pdf
 URL: (null)

ВходящаяUrlString содержит норвежскую букву "å", которая, как я думаю, является причиной того, что NSURL является (null)

Я также попробовал следующее:

NSString *trimmedString = [file stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSString *encodedString = (NSString *)CFURLCreateStringByAddingPercentEscapes(NULL, (CFStringRef)trimmedString, NULL, (CFStringRef)@"!*'\"();:@&=+$,/?%#[]% ", kCFStringEncodingUTF8);

NSLog(@"TRIMMEDSTRING: %@" , trimmedString);
NSLog(@"ENCODEDSTRING: %@" , [encodedString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]);

NSURL *url = [NSURL URLWithString:encodedString];

NSLog(@"URL: %@" , url);

Вот результат:

 TRIMMEDSTRING: /url/path/fileName_blå.pdf
 ENCODEDSTRING: /url/path/fileName_blå.pdf
 URL: %2Furl%2FPath%2FfileName_bl%C3%A5.pdf

Моя цель - загрузить URL в UIWebView. Это работает для всех других входящих URL, кроме этого, все они выглядят одинаково, за исключением имени файла. Это единственный, содержащий недопустимый символ. Но я должен найти способ закодировать его, потому что в будущем будет больше файлов, содержащих либо "æ", либо "ø", либо "å".

Я знаю, что вывод выглядит некорректно в соответствии со стандартами url, что я сделал специально. Я не могу показать правильный url с http://blah blah из-за соображений безопасности.

Кто-нибудь может помочь?

5
задан Jay Bhalani 21 December 2015 в 06:48
поделиться