2015-04-01 13 views
14

Ho bisogno di inviare un URL in arabo, quindi ho bisogno di codificarlo prima di inserirlo in URL. Sto usando il codice Swift.url di codifica usando il codice swift

Di seguito è riportato un esempio quello che ho davvero bisogno

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

let url = NSURL(string : s) 

Così la parola (السلام عليكم) è in caratteri arabi che quello che desidera inviare.

+0

http://stackoverflow.com/a/28734595/2303865 –

+0

sei arrivato la risposta? – Jan

risposta

0

si devono codificare questo URL prima di inviare questo URL

6

È necessario codificare URL, che hai scritto. È possibile farlo con quel metodo stringa:

stringByAddingPercentEscapesUsingEncoding(NSStringEncoding) 

Così il vostro codice sarà:

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

Swift 2,0

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

Swift 3,0

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

Swift 3,1

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

Swift 3 dovrebbe essere: let urlwithPercentEscapes = myurlstring.addingPercentEncoding (withAllowedCharacters: NSCharacterSet.urlQueryAllowed) senza parentesi dopo NSCharacterSet.urlQueryAllowed perché è una proprietà non una funzione. – Benjamin

7

Per migliorare @Druva's answer creare un'estensione da qualche parte nel progetto

Swift 2,0

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

} 

Swift 3.0

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

    } 
0

È necessario codificare questa stringa poiché contiene caratteri speciali.

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

dove encodedURL è il tuo URL finale