2010-10-12 2 views
4

Мне нужно передать кириллические символы в качестве параметра в URL-адресе моего iPhone-приложения. Образец URL выглядит следующим образом:Передача кириллических символов в качестве параметра 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, но я надеялся, что вокруг этого будет способ с другим кодом или кодировкой.

ответ

14

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

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

documentation link

+0

Спасибо Robot K! Это сработало! Думаю, мне действительно нужно больше искать документацию для всех возможных кодировок. Я не видел, чтобы кто-то упоминал, где я смотрел! – user472938

+0

Это нелегко найти. NSString - это огромный класс, и некоторые из имен методов довольно сбивают с толку. –

+0

Спасибо, это работает также для испанских специальных символов, таких как á, é, í, ó, ú и ñ. – mvasco

Смежные вопросы