2012-01-14 112 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