使用swift代码编码网址

ina*_*nva 17 url nsurl ios swift

我需要用阿拉伯语发送一个URL,所以我需要在将它放入URL之前对其进行编码.我正在使用Swift代码.

以下是我真正需要的一个例子

var s = "www.example.com/?????? ?????"

let url = NSURL(string : s)
Run Code Online (Sandbox Code Playgroud)

所以这个词(السلامعليكم)是阿拉伯字符,我想要发送.

yar*_*rlg 30

Swift 2.0

let urlwithPercentEscapes = myurlstring.stringByAddingPercentEncodingWithAllowedCharacters( NSCharacterSet.URLQueryAllowedCharacterSet())
Run Code Online (Sandbox Code Playgroud)

斯威夫特3

let urlwithPercentEscapes = myurlstring.addingPercentEncoding( withAllowedCharacters: .urlQueryAllowed)
Run Code Online (Sandbox Code Playgroud)

  • Swift 3应该是:在NSCharacterSet.urlQueryAllowed之后,让urlwithPercentEscapes = myurlstring.addingPercentEncoding(withAllowedCharacters:NSCharacterSet.urlQueryAllowed)没有括号,因为它是属性而不是函数. (3认同)

Vya*_*lav 10

为了改善@ Druva的答案 ,在项目的某个地方创建一个扩展

Swift 2.0

extension String
{   
    func encodeUrl() -> String
    {
        return self.stringByAddingPercentEncodingWithAllowedCharacters( NSCharacterSet.URLQueryAllowedCharacterSet())
    }
func decodeUrl() -> String
    {
        return self.stringByRemovingPercentEncoding
    }

}
Run Code Online (Sandbox Code Playgroud)

Swift 3.0

 extension String
    {   
        func encodeUrl() -> String
        {
            return self.addingPercentEncoding( withAllowedCharacters: .urlQueryAllowed)
        }
    func decodeUrl() -> String
        {
            return self.stringByRemovingPercentEncoding
        }

    }
Run Code Online (Sandbox Code Playgroud)


Vas*_*ily 6

你需要编写url来编写代码.您可以使用该字符串方法执行此操作:

stringByAddingPercentEscapesUsingEncoding(NSStringEncoding)
Run Code Online (Sandbox Code Playgroud)

所以你的代码将是:

var s = "www.example.com/?????? ?????"
// you may add check before force unwrapping
let url = NSURL(string : s.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)!)
Run Code Online (Sandbox Code Playgroud)


小智 -2

您必须在发送此 URL 之前对此 URL 进行编码