Я не знаю, как и где добавить правильный код кодировки в этот код iPhone - PullRequest
1 голос
/ 28 марта 2010

Хорошо, я понимаю, что использование строк, содержащих специальные символы, является проблемой кодирования. Однако я не уверен, как настроить мой код, чтобы разрешить эти символы. Ниже приведен код, который отлично работает с текстом, который не содержит специальных символов, но можете ли вы показать мне, как и где изменить код, чтобы использовать специальные символы. Прямо сейчас эти персонажи ломают приложение.

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
    if (buttonIndex == 1) {
        //iTunes Audio Search
        NSString *stringURL = [NSString stringWithFormat:@"http://phobos.apple.com/WebObjects/MZSearch.woa/wa/search?WOURLEncoding=ISO8859_1&lang=1&output=lm&term=\"%@\"",currentSong.title];
        stringURL = [stringURL stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
        NSURL *url = [NSURL URLWithString:stringURL];
        [[UIApplication sharedApplication] openURL:url];
    }
}

А это:

-(IBAction)launchLyricsSearch:(id)sender{
    WebViewController * webView = [[WebViewController alloc] initWithNibName:@"WebViewController" bundle:[NSBundle mainBundle]];
    webView.webURL = [NSString stringWithFormat:@"http://www.google.com/m/search?hl=es&q=\"%@\"+letras",currentSong.title];
    webView.webTitle = @"Letras";   
    [self.navigationController pushViewController:webView animated:YES];
}

Пожалуйста, покажите мне, как и где это сделать для этих двух битов кода.

Ответы [ 3 ]

0 голосов
/ 28 марта 2010

Хорошо, ответ Дейва отлично подходит для части 1:

Рабочий код:

NSString *stringURL = [NSString stringWithFormat:@"http://phobos.apple.com/WebObjects/MZSearch.woa/wa/search?WOURLEncoding=ISO8859_1&lang=1&output=lm&term=\"%@\"",currentSong.title];
stringURL = [stringURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

Однако Часть 2 еще не готова (я знаю, что это я ... но не могли бы вы помочь?)

webView.webURL = [NSString stringwithFormat:@"http://www.google.com/m/search?hl=es&q=\"%@\"+letras",currentSong.title];
webView.webURL = [webView.webURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

Каков будет правильный код для получения webView.webURL, разрешающего использование испанских символов, таких как «ñ»?

0 голосов
/ 28 марта 2010

Вы должны использовать процент-экранирование только для currentSong.title, а не для всего URL. Вот как это должно выглядеть:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
    if (buttonIndex == 1) {
        //iTunes Audio Search
        NSString *stringURL = [NSString stringWithFormat: 
            @"http://phobos.apple.com/WebObjects/MZSearch.woa/wa/search?WOURLEncoding=ISO8859_1&lang=1&output=lm&term=\"%@\"", 
            [currentSong.title stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
        NSURL *url = [NSURL URLWithString:stringURL];
        [[UIApplication sharedApplication] openURL:url];
    }
}

-(IBAction)launchLyricsSearch:(id)sender{
    WebViewController * webView = [[WebViewController alloc] initWithNibName:@"WebViewController" bundle:[NSBundle mainBundle]];
    webView.webURL = [NSString stringWithFormat: 
        @"http://www.google.com/m/search?hl=es&q=\"%@\"+letras", 
        [currentSong.title stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
    webView.webTitle = @"Letras";   
    [self.navigationController pushViewController:webView animated:YES];
}

Для не-ASCII-символов, таких как ñ, NSUTF8StringEncoding должен правильно обрабатывать их. NSUTF8StringEncoding - это рекомендуемая кодировка для URL.

0 голосов
/ 28 марта 2010

-[NSString stringByAddingPercentEscapesUsingEncoding:]

NSASCIIStringEncoding обычно лучше всего подходит для кодирования URL.

Если вы хотите экранировать только определенные символы, используйте CFURLCreateStringByAddingPercentEscapes().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...