У меня есть 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 из-за соображений безопасности.
Кто-нибудь может помочь?