Я столкнулся с аналогичной проблемой передачи сложных строк в качестве параметра POST. Мои строки могут содержать азиатские символы, пробелы, кавычки и всевозможные специальные символы. Решение, которое я в конце концов нашел, состояло в том, чтобы преобразовать мою строку в соответствующую серию юникодов, например "Hu0040Hu0020Hu03f5 ....", используя [NSString stringWithFormat: @ "Hu% 04x", [string characterAtIndex: i]], чтобы получить Unicode от каждого символа в исходной строке. То же самое можно сделать в Java.
Эта строка может быть безопасно передана в качестве параметра POST.
На стороне сервера (PHP) я меняю все буквы "H" на "\" и передаю полученную строку в json_decode. Последний шаг - экранирование одинарных кавычек перед сохранением строки в MySQL.
Таким образом, я могу сохранить любую строку UTF8 на моем сервере.