Pregunta

Mi aplicación para el iPhone llamada búsqueda local de Google (versión no javascript) a comportarse algunos negocios de búsqueda.

A continuación se muestra el código para formar una url:

NSString *url = [NSString stringWithFormat:@"http://ajax.googleapis.com/ajax/services/search/local?v=1.0&q=%@", keyword];
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
[request setURL:[NSURL URLWithString:url]];
[request setHTTPMethod:@"GET"];

//get response
NSHTTPURLResponse* urlResponse = nil;  
NSError *error = [[[NSError alloc] init] autorelease];  
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&error];  
NSString *result = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];

Cuando la palabra clave se refiere a caracteres ingleses, que funciona bien, pero cuando se refiere a los caracteres chinos (codificado en UTF-8, como '天安门' cuyo código UTF-8 es 'e5a4a9 e5ae89 e997a8'), informará de error NSURLErrorBadURL (-1000 , devuelve cuando una URL es incorrecto suficiente como para que una petición de URL no puede ser iniciado). ¿Por qué?

Luego llevar a cabo más investigaciones, utilizo Safari y escriba la siguiente URL: http://ajax.googleapis.com/ajax/services/search/local?v=1.0&q= 天安门

También funciona, y la salida que recibí de Macsniffer es: /ajax/services/search/local?v=1.0&q=%E5%A4%A9%E5%AE%89%E9%97%A8

Así que escribir una dirección URL de pruebas directamente en mi aplicación

NSString *url = [NSString stringWithFormat:@"http://ajax.googleapis.com/ajax/services/search/local?v=1.0&q=%E5%A4%A9%E5%AE%89%E9%97%A8"];

Y lo que me dieron desde el Macsniffer es alguna otra cosa: /ajax/services/search/local?v=1.0&q=1.687891E-28750X1.417C0001416CP-102640X1.4CC2D04648FBP-9999-1.989891E+0050X1.20DC00184CC67P-953E8E99A8

Parece que mi palabra clave "% E5% A4% A9% E5% AE% 89% E9% 97% A8" se tradujo en otra cosa. Entonces, ¿cómo puedo formar una URL válida? Yo necesito ayuda!

¿Fue útil?

Solución

Ha intentado que codifica la cadena de búsqueda:

NSString * escapedKeyword = [palabra clave stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top