У меня есть NSString
, содержащий URL, и когда я выделяю NSURL
с выходами NSString
, NSURL (ноль). Это потому, что в 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)
Входящая строка содержит норвежскую букву "å", которая, как мне кажется, является причиной того, что NSURL
(ноль)
Я тоже пробовал это:
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 бла из соображений безопасности.
Может кто-нибудь помочь?