символ вертикальной трубы не обнаружен в NSURL - PullRequest
7 голосов
/ 29 мая 2011

Я пытаюсь разместить поиск в словаре Google, но URL содержит вертикальную трубу / строку | Мой код просто не может загрузить сайт

 //http://www.google.com/dictionary?aq=f&langpair=en|en&q=test+test+test&hl=en


if ([mySearchEngineName isEqualToString:@"Google Dictionary"]){
        NSLog(@"Currently searching %@ using %@", mySearchString, mySearchEngineName); 

        NSString *mutateSearchString = [mySearchString stringByReplacingOccurrencesOfString:@" " withString:@"+"];
        NSString *searchURL =[NSString stringWithFormat:@"http://www.google.com/dictionary?aq=f&langpair=en|en&q=%@&hl=en", mutateSearchString];
        NSURL *url = [NSURL URLWithString:searchURL];
        [webBrowser loadRequest:[NSURLRequest requestWithURL:url]];
    }

с использованием% 7C тоже не сработало ..

NSString *searchURL =[NSString stringWithFormat:@"http://www.google.com/dictionary?aq=f&langpair=en%7Cen&q=%@&hl=en", mutateSearchString];

1 Ответ

18 голосов
/ 29 мая 2011

Подумайте о кодировании вашего URL, используя что-то вроде:

NSURL *url = [NSURL URLWithString:[searchURL stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]]; 

вместо того, чтобы делать это вручную. Возможно, в вашем mySearchString NSString есть некоторые символы, которые также нуждаются в кодировании. Запустите эту кодировку после того, как у вас есть stringWithFormat для полного URL вместе.

...