2012-01-14 28 views
0

我想在objective-c下做一个非常简单的任务,在IOS5:将URL字符串转换为其转义表示。在Objective-C中的URL字符串转义表示? (“编码百分比”)

我尝试了很多方法来做到这一点,但都没有奏效。

我无法使stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding工作。它转换字母áíűőüöúóé,但不会像=一样转换其他字符。

我想在.net中有一个像Uri.EscapeDataString(http://msdn.microsoft.com/en-us/library/system.uri.escapedatastring.aspx)这样的函数。

谢谢!

回答

1

你可以一个类别添加到NSString,做类似

- (NSString *)ps_stringByAddingPercentEscapes; 
{ 
    return [(NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, 
                   (CFStringRef)self, 
                   NULL, 
                   (CFStringRef)@":/?#[]@!$&’()*+,;=", 
                   kCFStringEncodingUTF8) autorelease]; 
} 

对于你关心的字符替换@":/?#[]@!$&’()*+,;="

+0

真的令我惊讶......我认为这是一个非常简单和基本的功能,应该包含在框架中:O – Tom 2012-01-14 00:57:01

+0

它是! CFURLCreateStringByAddingPercentEscapes是操作系统框架的一部分。 – StilesCrisis 2012-01-14 00:59:21

+0

@StilesCrisis我认为他的意思是他认为这将是“基金会”的一部分。看起来很奇怪,不得不下降到'CoreFoundation'。该文档说'看CFURLCreateStringByReplacingPercentEscapes更复杂的转换.'但我也不确定为什么'NSASCIIStringEncoding'不包括它已经 – 2012-01-14 01:02:25