我正在尝试对字符串进行URL编码以形成来自objective-c的GET请求.
NSString *params = @"'Decoded data!'/foo.bar:baz";
NSRunAlertPanel( @"Error", [params urlEncoded], @"OK", nil, nil );
Run Code Online (Sandbox Code Playgroud)
这是扩展NSString的类别
-(NSString *) urlEncoded
{
NSString *encoded = (NSString *)CFURLCreateStringByAddingPercentEscapes(
NULL,
(CFStringRef)self,
NULL,
(CFStringRef)@"!*'\"();:@&=+$,/?%#[]% ",
kCFStringEncodingUTF8 );
return encoded;
}
Run Code Online (Sandbox Code Playgroud)
所以第一次运行它我就回来了
1606410046ecoded 1606410784ata2270.000000foo.bar0X1.001716P-1042baz
Run Code Online (Sandbox Code Playgroud)
从对话框中.
我再次运行后立即得到了这个
1606410046ecoded 1606410944ata227369374562920703448982951250259562309742470533728899744288431318481119278377104028261651081181287077973859930826299575521579020410425419424562236383226511593137467590082636817579938932512039895040.000000foo.bar0X1.66E6156303225P+771baz
Run Code Online (Sandbox Code Playgroud)
然后,如果我再次运行它,它会回到第一个.这真的很奇怪.
如果params设置为@"&"或@"",我只需在对话框中找回"2"(不带引号).
还有一种方法可以在警告对话框中显示%符号吗?
谢谢