Будьте осторожны, чтобы не допустить утечки памяти при преобразованиях при использовании CFStringRef. Вот что я придумал для работы с латинскими символами и другие. Я использую это для экранирования моих параметров, а не всего URL. В зависимости от вашего варианта использования может потребоваться добавить или удалить символы из escapeChars
CFStringRef escapeChars = (CFStringRef)@"%;/?¿:@&=$+,[]#!'()*<>¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ \"\n";
NSString *encodedString = (__bridge_transfer NSString *) CFURLCreateStringByAddingPercentEscapes(NULL, (__bridge_retained CFStringRef) url, NULL, escapeChars, kCFStringEncodingUTF8);
Надеюсь, это поможет.