3

我在谷歌上搜索时遇到了麻烦。

Objective-C 是否有对 URI 组件进行编码的等效方法?

http://www.w3schools.com/jsref/jsref_encodeuricomponent.asp

这似乎是一个非常常见的用例,但我在 Objective-C 中找不到任何关于它的文档。

谢谢。

4

3 回答 3

6

-[NSString stringByAddingPercentEscapesUsingEncoding:]是最简单的方法。

于 2012-07-02T22:55:39.643 回答
1

当然,您可以选择这种方法,希望对您有所帮助。

//encode URL string

+(NSString *)URLEncodedString:(NSString *)str
{

    NSString *encodedString = (NSString *)
    CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
                                                              (CFStringRef)str,
                                                              NULL,
                                                              (CFStringRef)@"!*'();:@&=+$,/?%#[]",
                                                              kCFStringEncodingUTF8));

    return encodedString;
}

}

//decode URL string

+(NSString *)URLDecodedString:(NSString *)str
{

  NSString *decodedString=(__bridge_transfer NSString *)CFURLCreateStringByReplacingPercentEscapesUsingEncoding(NULL, (__bridge CFStringRef)str, CFSTR(""), CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding));

    return decodedString;
}
于 2016-07-14T09:28:28.553 回答
0

现在stringByAddingPercentEscapesUsingEncoding:已弃用。这是 iOS 7+ 的等价物encodeURIComponent

[str stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]
于 2017-02-10T22:36:16.777 回答