为了账号安全,请及时绑定邮箱和手机立即绑定

如何在NSURL中使用特殊字符?

/ 猿问

如何在NSURL中使用特殊字符?

侃侃尔雅 2019-10-21 15:46:47

我的应用程序正在使用这样的NSURL:


var url = NSURL(string: "http://www.geonames.org/search.html?q=Aïn+Béïda+Algeria&country=")

当我尝试执行一个任务来从此NSURL获取数据时,如下所示:


    let task = NSURLSession.sharedSession().dataTaskWithURL(url!, completionHandler: { (data: NSData!, response: NSURLResponse!, error: NSError!) -> Void in


        if error == nil {


            var urlContent = NSString(data: data, encoding: NSUTF8StringEncoding)

            println("urlContent \(urlContent!)")

        } else {


            println("error mode")

        }

但是当我尝试从该地址获取数据时出现错误,尽管当我使用野生动物园去链接时:“ http://www.geonames.org/search.html?q =Aïn+Béïda+ Algeria&country =”我可以看到数据。我该如何解决?


查看完整描述

3 回答

?
慕容3067478

迅捷2


let original = "http://www.geonames.org/search.html?q=Aïn+Béïda+Algeria&country="

if let encodedString = original.stringByAddingPercentEncodingWithAllowedCharacters(

    NSCharacterSet.URLFragmentAllowedCharacterSet()),

    url = NSURL(string: encodedString) 

{

    print(url)

}

编码的URL现在是:


“ http://www.geonames.org/search.html?q=A%C3%AFn+B%C3%A9%C3%AFda+Algeria&country= ”


并与兼容NSURLSession。


迅捷3


let original = "http://www.geonames.org/search.html?q=Aïn+Béïda+Algeria&country="

if let encoded = original.addingPercentEncoding(withAllowedCharacters: .urlFragmentAllowed),

    let url = URL(string: encoded)

{

    print(url)

}


查看完整回答
反对 回复 2019-10-21
?
慕前端131612

为什么URLFragmentAllowedCharacterSet呢?还有URLHostAllowedCharacterSetURLPasswordAllowedCharacterSetURLPathAllowedCharacterSetURLQueryAllowedCharacterSetURLUserAllowedCharacterSet 

查看完整回答
反对 回复 2019-10-21
?
MMMHUHU

我使用此代码片段有两个问题:1. 永远不要一次编码整个查询字符串。某些字符保留为查询字符串部分(&,=等)之间的分隔符,并且如果组成这些查询部分的原始字符串包含这些字符中的任何一个,则您的方法将很难解决。2.您应该使用NSURLComponents构造查询字符串,而不是使用字符串串联。它更安全,并且避免您完全担心字符集。

查看完整回答
反对 回复 2019-10-21

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信