2015-04-01 143 views
14

我需要用阿拉伯語發送一個URL,所以我需要在將它放入URL之前進行編碼。我正在使用Swift代碼。使用swift代碼編碼網址

下面是一個例子我真正需要的

var s = "www.example.com/السلام عليكم" 

let url = NSURL(string : s) 

所以字(السلامعليكم)是什麼我想給阿拉伯字符。

+0

http://stackoverflow.com/a/28734595/2303865 – 2015-04-01 19:01:44

+0

你得到的答案? – Jan 2016-10-12 05:22:04

回答

6

你需要爲你寫編碼網址前編碼這個URL。你可以用字符串的方法做到這一點:

stringByAddingPercentEscapesUsingEncoding(NSStringEncoding) 

所以,你的代碼將是:

var s = "www.example.com/السلام عليكم" 
// you may add check before force unwrapping 
let url = NSURL(string : s.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)!) 
24

雨燕2.0

let urlwithPercentEscapes = myurlstring.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet()) 

雨燕3.0

let urlwithPercentEscapes = myurlstring.addingPercentEncoding(withAllowedCharacters: NSCharacterSet.urlQueryAllowed()) 

雨燕3.1

let urlwithPercentEscapes = myurlstring.addingPercentEncoding(withAllowedCharacters: NSCharacterSet.urlQueryAllowed) 
+3

Swift 3應該是:讓urlwithPercentEscapes = myurlstring.addingPercentEncoding(withAllowedCharacters:NSCharacterSet.urlQueryAllowed)在NSCharacterSet.urlQueryAllowed之後沒有圓括號,因爲它是一個屬性而不是函數。 – Benjamin 2016-11-04 09:39:44

7

爲了提高@Druva's answer 項目

斯威夫特的地方創建一個推廣2.0

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

} 

雨燕3.0

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

    } 
0

您需要對此字符串進行編碼,因爲它包含特殊字符。

var s = "www.example.com/السلام عليكم" 
let encodedLink = s.addingPercentEncoding(withAllowedCharacters: .urlFragmentAllowed) 
let encodedURL = NSURL(string: encodedLink!)! as URL 

其中encodedURL是您的最終網址