2010-11-10 25 views
7

¿Cómo puedo codificar este URL para que se muestre en un UIWebView:NSURL con caracteres especiales

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

Traté:

-stringByAddingPercentEscapesUsingEncoding:NSUnicodeStringEncoding 
-stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding 

y

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

gracias

Joerg

Respuesta

7

Codificar sólo la parte de la búsqueda de la cadena 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]; 

(. Tenga en cuenta también que NSUTF8StringEncoding es la codificación utilizada)

+1

bien esto podría ser una aproximación, pero no estoy seguro de la url siempre se verá así. También podría ser: http://de.wikipedia.org/wiki/Bevölkerungsentwicklung – Joerg

+0

@Joerg: Lo siento; Supuse que el término de búsqueda era de entrada de usuario. : S – Wevah

+0

'stringByAddingPercentEscapesUsingEncoding' está en desuso: use' stringByAddingPercentEncodingWithAllowedCharacters (_ :) ', que siempre usa la codificación UTF-8 recomendada y codifica para un componente o subcomponente URL específico ya que cada componente o subcomponente de URL tiene reglas diferentes para los personajes son validos –

2

El uso justo debajo de código de ejemplo;


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

hm sí, pero estoy buscando más una solución para codificar cualquier url. también podría ser: http://de.wikipedia.org/wiki/Bevölkerungsentwicklung – Joerg

1

También encontré que para algunos caracteres del norte de Europa, NSISOLatin1StringEncoding encaja mejor. Éste me da un mejor resultado

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