Вы ищете форматирование строки, которое в Python основано на функции sprintf в C.
print "[%s, %s, %s]" % (1, 2, 3)
Для получения полной ссылки смотрите здесь: http://docs.python.org/library/stdtypes.html#string-formatting
Вы не должны экранировать всю строку с помощью URL-адреса, вы должны экранировать URL-адрес динамических компонентов. Попробуйте
NSString *urlStr = [NSString stringWithFormat:@"http://server.com/file.php?name=%@&tags=%@&entry=%@",
[nameField.text stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding],
[tagsField.text stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding],
[dreamEntry.text stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding],
nil];
NSURL *url = [NSURL URLWithString:urlStr];
Вторая проблема с вашим кодом (и, несомненно, причина нечетной печати) заключается в том, что вы передаете строку непосредственно в NSLog, поэтому она обрабатывается как строка формата. Вместо этого вам нужно использовать
NSLog(@"%@", encodedString);
. Это заставит его печатать, как ожидалось.
Изменить: Третья проблема с вашим кодом заключается в том, что вы смешиваете автоматически выпущенные и собственные объекты, а затем освобождаете их все в конце. Взгляните на 3 объекта, которые вы создаете и которые впоследствии отпустите. Один из них не должен не будет выпущен позже, потому что он был создан методом, который не начинался со слов alloc, copy или new. Определение объекта, о котором идет речь, - это упражнение, оставленное читателю.
Вы можете взять свой URL-адрес и использовать:
NSString *urlStr = [[NSString alloc] initWithFormat:@"http://server.com/file.php?name=%@&tags=%@&entry=%@",nameField.text, tagsField.text, dreamEntry.text];
NSString *encStr = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];