ios swift url nsurl

ios - codificar url utilizando código swift



nsurl (6)

Necesita codificar esta cadena ya que contiene caracteres especiales.

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

donde encodedURL es tu URL final

Necesito enviar una URL en idioma árabe, por lo que debo codificarla antes de ponerla en la URL. Estoy usando el código Swift.

A continuación se muestra un ejemplo de lo que realmente necesito

var s = "www.example.com/السلام عليكم" let url = NSURL(string : s)

Así que la palabra (السلام عليكم) está en caracteres árabes que quiero enviar.


Necesitas codificar la url como has escrito. Puedes hacerlo con ese método de cadena:

stringByAddingPercentEscapesUsingEncoding(NSStringEncoding)

Entonces tu código será:

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


Para mejorar la respuesta de @Druva, cree una extensión en algún lugar del proyecto.

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: .urlQueryAllowed) } func decodeUrl() -> String { return self.stringByRemovingPercentEncoding } }


tienes que codificar esta URL antes de enviar esta URL


Swift 2.0

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

Swift 3

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


Swift 4 nos enfrentamos al mismo problema que resolvió de esta manera.

extension String { var fixedArabicURL: String? { return self.addingPercentEncoding(withAllowedCharacters: CharacterSet.alphanumerics .union(CharacterSet.urlPathAllowed) .union(CharacterSet.urlHostAllowed)) } }