Мое приложение для iphone называется Локальный поиск Google (не в формате javascript) , чтобы вести поисковый бизнес.
Ниже приведен мой код для формирования 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];
Когда ключевое слово относится к английским символам, оно работает нормально, но когда ссылается на китайские символы (закодированные в UTF8, например 'Если код «UTF8» равен «e5a4a9 e5ae89 e997a8»), он сообщит об ошибке NSURLErrorBadURL (-1000, возвращается, если URL-адрес достаточно искажен, что запрос URL-адреса не может быть инициирован).Почему?
Затем я провожу дальнейшее расследование, использую Safari и набираю URL ниже: http://ajax.googleapis.com/ajax/services/search/local?v=1.0&q=天安门
Это также работает, и вывод, который я получил от Macsniffer: / ajax / services / search / local? V = 1,0 & q =% E5% A4% A9% E5% AE% 89% E9% 97% A8
Поэтому я пишу URL-адрес тестированияпрямо в моем приложении
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"];
И что я получил от Macsniffer - это еще кое-что: / ajax / services / search / local? v = 1.0 & q = 1.687891E-28750X1.417C0001416CP-102640X1.4CC2D04648FBP-9999-1.989891E + 0050X1.20DC00184CC67P-953E8E99A8
Кажется, мое ключевое слово "% E5% A4% A9% E5% AE% 89% E9% 97% A8" было переведено в нечтоостальное.Итак, как я могу сформировать действительный URL?Мне нужна помощь!