-[NSString stringByAddingPercentEscapesUsingEncoding:]
не следует использовать для кодирования значений параметров. Он оставляет некоторые специальные символы (+, & и т. Д.) Незашифрованными (как и должно быть, если вы кодировали URL).
Используйте следующее:
NSString *escapedParameter = [(NSString*)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)unescapedParameter, NULL, CFSTR("?=&+"), kCFStringEncodingUTF8) autorelease];
Не так красиво, как stringByAddingPercentEscapesUsingEncoding:
, но вы можете легко сделать макрос для этого.
http://arstechnica.com/apple/news/2009/01/iphone-dev-building-proper-mailto-urls.ars был написан еще в январе, когда я обнаружил похожие проблемы с созданием mailto: URL для отправки на -[UIApplication openURL:]
.
N.B. Добро пожаловать в переполнение стека! Не забудьте прочитать FAQ и пометить принятые ответы на свои вопросы (если, конечно, это хорошие ответы, которые стоит принять).