我必須使用具有國際字符的GET
訪問Web服務器(在我的情況下希伯來語,但可能是任何東西)。 所以我做出NSString
得很好,但如何從NSString中準備NSURL並使國際字符不變?
[NSURL URLWithString:urlString]; // returns nil.
我意識到我可能有國際字符轉換爲百分比碼。
Objective-c中是否有內置方法可以這樣做?
我必須使用具有國際字符的GET
訪問Web服務器(在我的情況下希伯來語,但可能是任何東西)。 所以我做出NSString
得很好,但如何從NSString中準備NSURL並使國際字符不變?
[NSURL URLWithString:urlString]; // returns nil.
我意識到我可能有國際字符轉換爲百分比碼。
Objective-c中是否有內置方法可以這樣做?
是有,你需要-stringByAddingPercentEscapesUsingEncoding:
方法:
[NSURL URLWithString:[string stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
這將確保NSURL *url
因爲urlString
的"|"
的不返回nil
。
NSString *urlString = [[NSString stringWithFormat:@"http://api.service.com/Service.svc?sort=name|ascending"] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURL URLWithString:urlString];
您可以直接使用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]];
(使用NewsUrl
變量)只是通過從另一種觀點認爲一個NSURL
這一觀點。
+ (NSURL*) URLWithStringWithSpecialChars:(NSString *)sURL
{
NSURL *url = [NSURL URLWithString:sURL];
if(url == nil)
return [NSURL URLWithString:[sURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
else
return url;
}
調用這個函數而不是URLWithString:應確保(在需要的時候,而不是零)的有效NSURL總是返回