2015-04-01 12 views
14

Ich muss eine URL in arabischer Sprache senden, also muss ich es verschlüsseln, bevor ich es in URL setzen. Ich verwende Swift-Code.Codierung URL mit Swift-Code

Unten ist ein Beispiel, was ich brauche

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

let url = NSURL(string : s) 

Also das Wort (السلام عليكم) ist in arabischen Zeichen, das, was ich senden will wirklich.

+0

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

+0

hast du die Antwort? – Jan

Antwort

0

müssen Sie diese URL Encode, bevor Sie diese URL zu senden

6

Sie müssen URL codieren, wie Sie geschrieben haben. Sie können mit diesem String-Methode vorgehen:

stringByAddingPercentEscapesUsingEncoding(NSStringEncoding) 

So wird Ihr Code sein:

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 sollte lauten: urlwithPercentEscapes = myurlstring.addingPercentEncoding (withAllowedCharacters: NSCharacterSet.urlQueryAllowed) ohne Klammern hinter NSCharacterSet.urlQueryAllowed, da es sich um eine Eigenschaft und keine Funktion handelt. – Benjamin

7

Um @Druva's answer schafft eine Erweiterung irgendwo in dem

Swift 2,0

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

} 

Swift 3.0

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

    } 
0

Sie müssen diese Zeichenfolge codieren, da sie Sonderzeichen enthält.

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

wo encodedURL finale URL ist