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))
} }