J'ai besoin d'envoyer une URL en langue arabe, donc je dois l'encoder avant de la mettre en URL. J'utilise le code Swift.
Voici un exemple de ce dont j'ai vraiment besoin
var s = "www.example.com/السلام عليكم"
let url = NSURL(string : s)
Donc la Parole (السلام عليكم) est en caractères arabes que ce que je veux envoyer.
Swift 2.0
let urlwithPercentEscapes = myurlstring.stringByAddingPercentEncodingWithAllowedCharacters( NSCharacterSet.URLQueryAllowedCharacterSet())
Swift 3
let urlwithPercentEscapes = myurlstring.addingPercentEncoding( withAllowedCharacters: .urlQueryAllowed)
Pour améliorer La réponse de @ Druva Créer une extension quelque part dans le projet
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
}
}
Vous devez encoder l'URL comme vous l'avez écrit. Vous pouvez le faire avec cette méthode de chaîne:
stringByAddingPercentEscapesUsingEncoding(NSStringEncoding)
Donc, votre code sera:
var s = "www.example.com/السلام عليكم"
// you may add check before force unwrapping
let url = NSURL(string : s.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)!)
Swift 4 Nous sommes confrontés au même problème qu’il a résolu de cette façon
extension String {
var fixedArabicURL: String? {
return self.addingPercentEncoding(withAllowedCharacters: CharacterSet.alphanumerics
.union(CharacterSet.urlPathAllowed)
.union(CharacterSet.urlHostAllowed))
} }
Vous devez encoder cette chaîne car elle contient des caractères spéciaux.
var s = "www.example.com/السلام عليكم"
let encodedLink = s.addingPercentEncoding(withAllowedCharacters: .urlFragmentAllowed)
let encodedURL = NSURL(string: encodedLink!)! as URL
où encodedURL est votre URL finale