【问题标题】:Passing Cyrillic characters as a URL parameter将西里尔字符作为 URL 参数传递
【发布时间】:2010-10-12 05:32:31
【问题描述】:

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

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

当我在浏览器中使用此 URL 时,它会返回正确的结果。但是,在我的应用程序中,不喜欢西里尔字母,我最终在 didFailWithError 代码中得到一个“错误的 url”。

我已经在我的浏览器中尝试了几种编码来解决这个问题,但都没有成功。有没有办法通过 iPhone 应用程序实际发送上面的确切 URL 示例?我正在使用的代码的 sn-p 是:

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 中被拒绝,但我希望有一种方法可以使用不同的代码或编码。

【问题讨论】:

    标签: iphone urlencode nsurlrequest


    【解决方案1】:

    如果你把它改成:

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

    documentation link

    【讨论】:

    • 感谢机器人 K!那行得通!我想我真的需要更多地搜索文档以获取所有可能的编码。我没有看到那个提到我看的地方!
    • 不好找。 NSString 是一个庞大的类,有些方法的名字比较混乱。
    • 谢谢,它也适用于西班牙特殊字符,如 á、é、í、ó、ú 和 ñ。
    • NSString * encodedString = [@"要编码的字符串" stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLFragmentAllowedCharacterSet]];使用它,因为您的方法已被弃用
    猜你喜欢
    • 2019-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-15
    • 2016-05-10
    相关资源
    最近更新 更多