проблема в CFURLCreateStringByReplacingPercentEscapesUsingEncoding - PullRequest
1 голос
/ 02 мая 2011

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

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

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

1 Ответ

0 голосов
/ 22 мая 2014

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

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

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

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

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

...