Я нашел решение.
Так как это почтовые данные, мне пришлось экранировать специальные символы.
stringByAddingPercentEscapesUsingEncoding:
, кажется, не экранирует все специальные символы. Я столкнулся с этой проблемой с символом «+», где он заменялся пробелом.
Я чувствую, что то же самое происходит с испанским персонажем, когда он не экранирован должным образом, поэтому я вручную заменил его, и это сработало.
Ниже приведен пример. Я написал это для всех персонажей
escapedString = [escapedString stringByReplacingOccurrencesOfString:@"À" withString:@"%C0"];
escapedString = [escapedString stringByReplacingOccurrencesOfString:@"Á" withString:@"%C1"];
escapedString = [escapedString stringByReplacingOccurrencesOfString:@"Â" withString:@"%C2"];
escapedString = [escapedString stringByReplacingOccurrencesOfString:@"Ã" withString:@"%C3"];
escapedString = [escapedString stringByReplacingOccurrencesOfString:@"Ä" withString:@"%C4"];
Спасибо, xj1200 и saadnib за внимание к этому. Я весьма признателен. Если вы, ребята, найдете другое лучшее решение, пожалуйста, напишите.