Iphone 如何从包含国际字符的NSString中准备NSURL?
我必须使用带有国际字符的Iphone 如何从包含国际字符的NSString中准备NSURL?,iphone,nsstring,nsurl,Iphone,Nsstring,Nsurl,我必须使用带有国际字符的GET(希伯来语,但可以是任何东西)访问web服务器。 所以我做了一个NSString很好,但是 [NSURL URLWithString:urlString]; // returns nil. 我意识到我可能需要将国际字符转换成百分比代码 Objective-c中是否有内置方法可以执行此操作?是的,您需要-stringByAddingPercentEscapesUsingEncoding:方法: [NSURL URLWithString:[string stringB
GET
(希伯来语,但可以是任何东西)访问web服务器。
所以我做了一个NSString
很好,但是
[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]];
只需将另一个视图中的NSURL
传递到此视图(使用NewsUrl
变量)
+ (NSURL*) URLWithStringWithSpecialChars:(NSString *)sURL
{
NSURL *url = [NSURL URLWithString:sURL];
if(url == nil)
return [NSURL URLWithString:[sURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
else
return url;
}
调用此函数而不是URLWithString:应确保始终返回有效的NSURL(需要时不是nil)