UPDATE: Я только что нашел аналогичный пост здесь: How do I encode "&" in a URL in an HTML attribute value?Создание электронной почты: URL с URL в теле iPhone SDK
Пожалуйста, обратите внимание на код ниже: попытке отправить сообщение электронной почты из моего iPhone приложение. Проблема, с которой я сталкиваюсь, заключается в том, что я хочу поместить URL-адрес в тело письма. Этот URL-адрес содержит два амперсанда. Я кодирую все строки, используя «stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding», но URL-адрес заканчивается в моем новом почтовом messagd, усеченном после первого амперсанда. IE: «http://www.mydomain.nl/?cm=79&ctime=1246572000&cid=4772» становится «http://www.mydomain.nl/?cm=79».
Любое предложение, что я могу сделать, чтобы убежать?
NSString *eMailSubject = @"My Subject";
NSString *encodedSubject = [[NSString alloc] initWithString:[eMailSubject stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSString *eMailBody = @"http://www.mydomain.nl?cm=79&ctime=1246572000&cid=4772";
NSString *encodedBody = [[NSString alloc] initWithString:[eMailBody stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSString *urlString = [[NSString alloc] initWithString:[NSString stringWithFormat:@"mailto:?subject=%@&body=%@", encodedSubject, encodedBody]];
NSString *encodedURL = [[NSString alloc] initWithString:[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSURL *url = [[NSURL alloc] initWithString:encodedURL];
[[UIApplication sharedApplication] openURL:url];
Проблема здесь состоит в том, что замена «&» содержит «&», так что это не решает проблему. Как предлагалось здесь (http://stackoverflow.com/questions/730101/how-do-i-encode-in-a-url-in-an-html-attribute-value) Я должен использовать шестнадцатеричный код% 26. Как-то это тоже не работает для меня. – Sjakelien
Вы смешиваете «&» в URL с «&» как объект HTML. Значение% 26 предназначено для кодирования URL-адреса. Но если вы хотите включить ссылку в HTML-контент, вам нужно заменить «&» на «&». Когда парсер HTML видит «&», он смотрит в будущее. Если это одна из значений юридического лица в опубликованной ссылке, она отображает ее с этим символом. Если он недействителен, он останавливается (это то, что вы получаете). Ознакомьтесь с разделом об амперсандах здесь: http://htmlhelp.com/tools/validator/problems.html – Ramin