将西里尔字符作为URL参数传递

时间:2010-10-12 05:32:31

标签: iphone urlencode nsurlrequest

我需要在我的iPhone应用程序中将西里尔字符作为参数传递给我。示例网址如下所示:

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

当我在浏览器中使用此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 中被拒绝了,但我希望通过不同的代码或编码来解决这个问题。

1 个答案:

答案 0 :(得分:15)

如果将其更改为:

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

documentation link