【发布时间】:2016-07-20 22:45:02
【问题描述】:
我是 Objective-C 的新手。
我想获取 NSString 的编码内容。在java中我可以这样做,
String str = "https://www.google.co.in/#q=ios+sqlite+crud+example";
String encodedParam = URLEncoder.encode(str, "UTF-8");
我正在使用http://www.tutorialspoint.com/compile_objective-c_online.php 来测试在stackoverflow 中发布的代码。目前还没有解决办法。我知道它是微不足道的。不过正在努力寻找方法。
尝试了以下功能,编译时提示以下错误,
-(NSString *)urlEncodeUsingEncoding:(NSStringEncoding)encoding {
return (NSString *)CFURLCreateStringByAddingPercentEscapes(NULL,
(CFStringRef)self,
NULL,
(CFStringRef)@"!*'\"();:@&=+$,/?%#[]% ",
CFStringConvertNSStringEncodingToEncoding(encoding));
}
错误,
sh-4.3$ gcc `gnustep-config --objc-flags` -L/usr/GNUstep/System/Library/Libraries -lgnustep-base -lobjc *.m -o main
main.m: In function 'main':
main.m:7:14: error: 'urlEncodeUsingEncoding' undeclared (first use in this function)
-(NSString *)urlEncodeUsingEncoding:(NSStringEncoding)encoding {
^
main.m:7:14: note: each undeclared identifier is reported only once for each function it appears in
main.m:7:36: error: expected ';' before ':' token
-(NSString *)urlEncodeUsingEncoding:(NSStringEncoding)encoding {
根据答案进行编辑,
Patrick 建议,我使用的代码如下,
NSString *storedURL = @"google.com/?search&q=this";
NSString *urlstring = [NSString stringWithFormat:@"http://%@/",storedURL];
NSURL *url = [NSURL URLWithString:urlstring];
NSError *error = nil;
NSStringEncoding encoding;
NSString *my_string = [[NSString alloc] initWithContentsOfURL:url
usedEncoding:&encoding
error:&error];
NSLog (my_string);
控制台中没有打印任何内容...是我的 NSLog 是对的吗?
由 lightwolf 建议,我的代码如下所示,
NSString *str = @"https://www.google.co.in/#q=ios+sqlite+crud+example";
NSString *encodedParam = [str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSLog (encodedParam);
它打印日志,但值与 str 相同.....未编码...我希望这个 str 为
https%3A%2F%2Fwww.google.co.in%2F%23q%3Dios%2Bsqlite%2Bcrud%2Bexample
【问题讨论】:
-
stringByAddingPercentEscapesUsingEncoding仅对与 URL 编码不兼容的字符进行编码。 “+”是一个可接受的字符(它表示空格),所以它没有被编码。顺便说一句,要在控制台中打印,您应该使用NSLog(@"%@", string) -
为什么不使用
NSURL对象?
标签: ios objective-c encode