2010-03-28 5 views
1

좋아, 나는 특수 문자가있는 문자열을 사용하는 것이 인코딩 문제임을 이해합니다. 그러나 이러한 문자를 허용하도록 코드를 조정하는 방법을 잘 모르겠습니다. 다음은 특수 문자가없는 텍스트에 잘 작동하는 코드이지만 특수 문자를 사용할 수 있도록 코드를 변경하는 방법과 위치를 알려줄 수 있습니까? 지금은 그 캐릭터가 앱을 충돌시킵니다.이 iPhone 코드에 올바른 인코딩 코드를 추가하는 방법이나 위치를 모르겠다.

- (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]; 
} 

방법 및 코드의 두 비트에 대해이 작업을 수행하는 저를 보여주십시오.

답변

0

확인 데이브의 대답은 제 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 부이없는 (I는 나를 알고 ...하지만 당신이 도움을 줄 수?)

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

내 대답보기 전체 URL 문자열에 URL을 삽입하는 대신 URL에 삽입하기 전에 퍼센트 이스케이프를 수행해야합니다. – lucius

0

전체 이스가 아닌 currentSong.title에만 퍼센트 이스케이프를 사용해야합니다. 같은 ñ 같은 비 ASCII 문자가 들어

- (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]; 
} 

의 NSUTF8StringEncoding이 적절하게 처리해야 : 여기 어떻게 보일지입니다. NSUTF8StringEncoding은 URL에 권장되는 인코딩입니다.

+0

음 ~ 거의 다 왔어. Lucius 나는 당신의 코드를 추가했다. 응용 프로그램이 중단되지 않지만 결과 currentSong.title의 파일 확장자는 입니다. 예를 들어 - 참여하는 2 : 그래서 "딩고 Eres의 선생" 이된다 딩고 % 2520Eres % 2520Se % 25C3 % 25B1or (이 브라우저에서 작동하지 않습니다 물론) 이상적으로 가 있어야한다 : 딩고 % 20Eres % 20Se % C3 % B1or 또는 아이디어가 있으십니까? –

+0

'% 25'은 백분율 문자를 나타내며, 이는 문자열이'stringByAddingPercentEscapesUsingEncoding :'을 통해 두 번 실행되고 있음을 의미합니다. 디버거를 사용하여 해당 메소드를 호출하고'currentSong.title'의 내용을 확인하기 전에 중단 점을 설정하십시오. 이미 탈출했다면 다시 할 필요가 없습니다. – lucius

+0

완벽한 - 감사합니다 루시우스. NSASCIIStringEncoding을 인코딩하는 별도의 웹보기 컨트롤러에있었습니다. 엄청 고마워. 이제 나는 잘 수있다! 굉장해. –

관련 문제