CFURLCreateStringByReplacingPercentEscapesUsingEncoding中的问题

时间:2011-05-02 12:38:39

标签: iphone web-services encoding core-foundation

我从webservice获取数据并在标签中显示。 下面是那个

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

每当来自webservice的响应是:%%%%%%%%%时,它就显示为空 CFURLCreateStringByReplacingPercentEscapesUsingEncoding删除了所有%符号。因此我对该地方使用的内容感到困惑,该地方将%%%%%作为我的字符串返回。

1 个答案:

答案 0 :(得分:0)

这是设计的。 %%不是%符号的有效编码。它将改为%25 - 见http://www.w3schools.com/tags/ref_urlencode.asp

此函数将在失败时返回NULL,特别是如果它找到无效的百分比转义序列(例如在您的示例中)。

例如,这可以正常工作

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

服务器需要返回正确的编码,除非你想亲自为这个案例解析这个特定的字符串。