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

Vin*_*nyD 29 objective-c urldecode ios

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

这是我目前正在使用的:

NSString *path = [@"path+with+spaces"
     stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
Run Code Online (Sandbox Code Playgroud)

这是输出的一个例子:

路径+与+空格

rob*_*off 52

NSString *path = [[@"path+with+spaces"
    stringByReplacingOccurrencesOfString:@"+" withString:@" "]
    stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
Run Code Online (Sandbox Code Playgroud)

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

  • `%^^`不是有效的百分比转义. (3认同)
  • 还有其他字符需要解码的+,不是吗? (2认同)

del*_*247 20

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

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

这似乎是首选方式,因为......"显然"这是苹果所知道的"虫子",但他们还没有采取任何措施......(http://simonwoodside.com/weblog/2009/4/22/how_to_really_url_encode /)