проблема в CFURLCreateStringByReplacingPercentEscapesUsingEncoding

#iphone #web-services #encoding #core-foundation

#iPhone #веб-сервисы #кодирование #ядро-основа

Вопрос:

Я получаю данные из веб-сервиса и отображаю их на ярлыке. ниже приведен код для этого

 cell.lblMainText.text=(NSString *)CFURLCreateStringByReplacingPercentEscapesUsingEncoding(
                                   kCFAllocatorDefault,
                                   (CFStringRef)cell.lblMainText.text,
                                   CFSTR(""), kCFStringEncodingUTF8);
  

Здесь всякий раз, когда ответ от веб-сервиса звучит так: %%%%%%%%% тогда он выдает null как
CFURLCreateStringByReplacingPercentEscapesUsingEncoding удаляет весь % знак .Итак, я немного запутался, что использовать в этом месте, которое возвращало бы %%%%% в качестве моей строки.

Комментарии:

1. Используете ли вы Monotouch?

Ответ №1:

Это сделано специально. %% не является допустимой кодировкой для знака%. Вместо этого было бы % — см. http://www.w3schools.com/tags/ref_urlencode.asp

Эта функция вернет NULL при сбое, особенно если она обнаружит недопустимую escape-последовательность процентов, такую как в вашем примере.

Например, это работает правильно

         CFStringRef string = CFURLCreateStringByReplacingPercentEscapesUsingEncoding(kCFAllocatorDefault, CFSTR("%%%%%%"), CFSTR(""), kCFStringEncodingUTF8);
  

Серверу необходимо будет вернуть правильную кодировку, если вы не хотите самостоятельно разбирать эту конкретную строку для этого случая.