2010-10-12 65 views
4

我需要将西里尔字符作为参数传递到我的iPhone应用程序的URL中。样本URL看起来像:将西里尔字符作为URL参数传递

http://www.mysite.com/script.php?message =страшная

当我在浏览器中使用这个URL,它返回正确的结果。然而,在我的应用程序中,西里尔不被喜欢,并且我最终得到了一个“错误的URL”,代码为didFailWithError

我在浏览器中尝试了几种编码来解决这个问题,但没有运气。有没有一种方法可以通过iPhone应用程序实际发送上述确切的URL示例?我使用的代码段是:

selectedWord = @"страшная"; 
NSString *requestURL = [NSString stringWithFormat:@"http://www.mysite.com/script.php?message=%@", selectedWord]; 
NSLog (requestURL); 
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:requestURL]]; 

[[NSURLConnection alloc] initWithRequest:request delegate:self]; 

在上面的代码,我已经硬编码了西里尔字在的NSString * selectedWord进行调试。在实际应用中,它将根据用户输入动态变化。

我试过更复杂的POST,认为我可以将西里尔文作为数据而不是文本传递,但是我做错了,或者它也不起作用。

关于编码的任何示例我可以在我的浏览器中尝试,然后在应用程序中实现将是有益的。我意识到西里尔文在NSURL被拒绝,但我希望有不同的代码或编码方式。

回答

14

如果你把它变成什么:

encodedSelectedWord = [selectedWord stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
NSString *requestURL = [NSString stringWithFormat:@"http://www.mysite.com/script.php?message=%@", encodedSelectedWord]; 

documentation link

+0

由于机器人ķ!这工作!我想我真的需要更多地搜索所有可能的编码文档。我没有看到那个提到我看的地方! – user472938 2010-10-12 13:50:03

+0

这不容易找到。 NSString是一个庞大的类,一些方法名称相当混乱。 – 2010-10-12 13:54:32

+0

谢谢,它适用于西班牙特殊字符,如á,é,í,ó,ú和ñ。 – mvasco 2014-10-26 22:10:14