如何在iOS中进行URL解码 - 目标C.

时间:2011-10-27 17:44:48

标签: objective-c ios urldecode

stringByReplacingPercentEscapesUsingEncoding方法无法正常工作,因为它不解码不以%字符开头的特殊符号,即+字符。有谁知道在iOS中更好的方法吗?

以下是我目前正在使用的内容:

NSString *path = [@"path+with+spaces"
     stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

这是输出的一个例子:

路径与+ +空格

5 个答案:

答案 0 :(得分:51)

NSString *path = [[@"path+with+spaces"
    stringByReplacingOccurrencesOfString:@"+" withString:@" "]
    stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

请注意,for-for-space替换仅用于application/x-www-form-urlencoded数据 - URL的查询字符串部分或POST请求的正文。

答案 1 :(得分:20)

// Decode a percent escape encoded string.
- (NSString*) decodeFromPercentEscapeString:(NSString *) string {
return (__bridge NSString *) CFURLCreateStringByReplacingPercentEscapesUsingEncoding(NULL,
                                                        (__bridge CFStringRef) string,
                                                        CFSTR(""),
                                                        kCFStringEncodingUTF8);
} 

http://cybersam.com/ios-dev/proper-url-percent-encoding-in-ios

这似乎是首选方式,因为...... “显然”这是苹果意识到的“虫子”,但他们还没有做过任何关于它的事情...(http://simonwoodside.com/weblog/2009/4/22/how_to_really_url_encode/

答案 2 :(得分:2)

如果您尝试使用百分比转义替换加号,请执行从“+”到“”(单个空格)的字符串替换。然后使用stringByAddingPercentEscapesUsingEncoding:添加百分比转义。

加号是从未编码的许多保留URL字符之一。

stringByReplacingPercentEscapesUsingEncoding:解码转义百分比)

答案 3 :(得分:1)

swift 2:

years = data["year"].apply(lambda date: datetime.strptime(date, '%m/%d/%Y %H:%M:%S %p').year)

答案 4 :(得分:0)

您还可以使用Cocoapods中的PercentEncoder库。

快捷键4

  • 将该库包含到您的Podfile中:

    pod PercentEncoder

  • 导入库PercentEncoder

    导入PercentEncoder

    ViewController类{

    ...

    }

  • 将“ +”字符替换为“%20”,并使用方法“ ped_decodeURI”

    “ path + with + spaces” .replacingOccurrences(of:“ +”,with:“%20”)。ped_decodeURI()

它将返回“带空格的路径”

这里是参考链接:https://cocoapods.org/pods/PercentEncoder