当我选择除英语以外的iPhone语言时,Nsurl返回零

当我选择除英语以外的iPhone语言时,Nsurl返回零,iphone,xcode,ios4,encoding,nsurl,Iphone,Xcode,Ios4,Encoding,Nsurl,我正在调用默认地图应用程序。从我的应用程序中,但例如,当我在iphone上为当前位置选择葡萄牙语言时,NSURL返回nil。 我已经使用了UTF8编码和百分比封装,如下所示:- NSString *encodedURLString = [urlString stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]; //where urlString has value http://maps.google.com

我正在调用默认地图应用程序。从我的应用程序中,但例如,当我在iphone上为当前位置选择葡萄牙语言时,NSURL返回nil。 我已经使用了UTF8编码和百分比封装,如下所示:-

 NSString *encodedURLString = [urlString stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
    //where urlString has value http://maps.google.com/maps?saddr=Localiza\u00e7\u00e3o+actual&daddr=28.6522907,77.1929857
 NSURL *URL = [NSURL URLWithString:encodedURLString];
 [[UIApplication sharedApplication] openURL:URL];
我已经尝试过NSUTF8Encoding而不是NSASCIIStringEncoding,但没有任何帮助。
谢谢您的帮助。

您正在对整个URL进行百分比编码

这将变成
http://www.google.com
进入
http%3A//www.google.com
,这是一个格式错误的URL

从NSURL类参考中:

返回值:用URLString初始化的NSURL对象。如果字符串格式不正确,则返回nil

因此,你收到的是零

您要做的是:

NSString *path = @"http://maps.google.com/maps";
NSString *query = @"saddr=Localiza\u00e7\u00e3o+actual&daddr=28.6522907,77.1929857";
query = [query stringByAddingPercentEscapesUsingEncoding: NSASCIIStringEncoding];

NSString *url = [NSString stringWithFormat: @"%@?%@", path, query];
NSURL *URL = [NSURL URLWithString: url];
[[UIApplication sharedApplication] openURL: URL];

您是否尝试在编码字符串后但在创建URL之前打印字符串的值?对整个URL字符串进行编码很奇怪,通常您只需对请求数据进行编码。