我必须使用带有国际字符的GET
访问Web服务器(在我的情况下是希伯来语,但可以是任何东西)。
所以我做了NSString
就好了,但是
[NSURL URLWithString:urlString]; // returns nil.
我意识到我可能必须将国际字符转换为百分比代码。
Objective-c中是否有内置方法来执行此操作?
答案 0 :(得分:10)
是的,你需要-stringByAddingPercentEscapesUsingEncoding:
方法:
[NSURL URLWithString:[string stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
答案 1 :(得分:0)
由于NSURL *url
中的nil
,这会确保"|"
不会返回urlString
。
NSString *urlString = [[NSString stringWithFormat:@"http://api.service.com/Service.svc?sort=name|ascending"] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURL URLWithString:urlString];
答案 2 :(得分:0)
您可以在没有NSURL
的情况下直接使用NSString
:
//.h file
@interface NewsBrowser : UIViewController {
UIWebView *webView;
NSURL *NewsUrl;
}
@property (nonatomic, retain) IBOutlet UIWebView *webView;
@property (nonatomic, assign) NSURL *NewsUrl;
@end
//.m file
[webView loadRequest:[NSURLRequest requestWithURL:NewsUrl]];
只需将NSURL
从另一个视图(使用NewsUrl
变量)传递到此视图。
答案 3 :(得分:0)
+ (NSURL*) URLWithStringWithSpecialChars:(NSString *)sURL
{
NSURL *url = [NSURL URLWithString:sURL];
if(url == nil)
return [NSURL URLWithString:[sURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
else
return url;
}
调用此函数而不是URLWithString:应确保始终返回有效的NSURL(而不是在需要时返回nil)