Передача символов кириллицы в качестве параметра URL - PullRequest
4 голосов
/ 12 октября 2010

Мне нужно передать символы кириллицы в качестве параметра в URL в моем приложении для iPhone. Пример URL выглядит так:

http://www.mysite.com/script.php?message=страшная

Когда я использую этот URL в своем браузере, он возвращает правильный результат. Однако в моем приложении кириллица не понравилась, и в итоге я получил «плохой URL» в коде didFailWithError .

Я пробовал несколько кодировок в своем браузере, чтобы обойти это, но безуспешно. Есть ли способ на самом деле отправить приведенный выше пример URL через приложение для iPhone? Фрагмент кода, который я использую:

selectedWord = @"страшная";
NSString *requestURL = [NSString stringWithFormat:@"http://www.mysite.com/script.php?message=%@", selectedWord];
NSLog (requestURL);
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:requestURL]];

[[NSURLConnection alloc] initWithRequest:request delegate:self];

В приведенном выше коде я жестко закодировал кириллическое слово в NSString * selectedWord для целей отладки. В реальном приложении оно будет динамическим на основе пользовательского ввода.

Я попробовал более сложный POST , думая, что я мог бы передать кириллицу как данные, а не как текст, но либо я делаю это неправильно, либо он тоже не работает.

Любой пример, касающийся кодирования, который я могу попробовать в своем браузере, затем реализовать в приложении, будет полезен. Я понимаю, что кириллица отклоняется в NSURL , но я надеялся, что был способ обойти это с другим кодом или кодировкой.

1 Ответ

15 голосов
/ 12 октября 2010

Что если вы измените его на:

encodedSelectedWord = [selectedWord stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString *requestURL = [NSString stringWithFormat:@"http://www.mysite.com/script.php?message=%@", encodedSelectedWord];

документация ссылка

...