2010-11-10 7 views
7

Как перекодировать этот адрес будет отображаться в UIWebView:NSURL со специальными символами

http://de.wikipedia.org/?search=Bevölkerungsentwicklung

Я пробовал:

-stringByAddingPercentEscapesUsingEncoding:NSUnicodeStringEncoding 
-stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding 

и

CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, 
             (CFStringRef)mobileUrl, 
             NULL, 
             (CFStringRef)@"!*'();:@&=+$,/?%#[]", 
             kCFStringEncodingUTF8); 

благодаря

Йорг

ответ

7

Encode только поиск часть URL строки:

// searchString is the unescaped search string, e.g., "Bevölkerungsentwicklung" 

NSString *encodedSearchString = [searchString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
NSString *urlString = [NSString stringWithFormat:@"http://de.wikipedia.org/?search=%@", encodedSearchString]; 
NSURL *url = [NSURL URLWithString:urlString]; 

(. Следует также отметить, что NSUTF8StringEncoding это кодировка используется)

+1

ОК это может быть подход, но я не уверен, что URL всегда будет выглядеть. Также может быть: http://de.wikipedia.org/wiki/Bevölkerungsentwicklung – Joerg

+0

@Joerg: Извините; Я предположил, что поисковый запрос был введен пользователем. : S – Wevah

+0

'stringByAddingPercentEscapesUsingEncoding' устарел: используйте' stringByAddingPercentEncodingWithAllowedCharacters (_ :) 'вместо этого, который всегда использует рекомендуемую кодировку UTF-8 и который кодирует для определенного URL-компонента или подкомпонента, поскольку каждый компонент или подкомпонент URL имеет разные правила для чего символы действительны. –

2

Просто используйте ниже пример кода;


NSString *urlstring = [NSString stringWithFormat:@"http://de.wikipedia.org/?search=%@", searchString]; 
NSString *encodedString = [urlstring stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
NSURL *url = [NSURL URLWithString:encodedString]; 
+1

hm да, но я ищу больше для решения для кодирования любого URL-адреса. это также может быть: http://de.wikipedia.org/wiki/Bevölkerungsentwicklung – Joerg

1

Я также нашел, что для некоторых североевропейских персонажей NSISOLatin1StringEncoding подходит лучше. Это один дает мне лучший результат

- (void) testEncoding { 
    NSString * urlString = @"http://example/path/fileName_blå.pdf"; 
    urlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSISOLatin1StringEncoding]; 
    NSURL * url = [NSURL URLWithString:urlString]; 
    NSLog(@"URL: %@", url); 
}