J'ai la chaîne suivante ...
NSString *googleSearchString = @"http://www.google.com/search?q=lyrics+%22Tænder+På+Dig%22+%22Jakob+Sveistrup%22";
Notez qu'il a des caractères accentués. Lorsque j'essaie de transformer cela en une URL, l'URL renvoyée est nulle ...
[NSURL URLWithString:googleSearchString];
Donc, normalement, l'URL fonctionne sauf s'il y a des caractères accentués non anglais dans la chaîne. Toute aide sur la façon de gérer cela?
Vous devez échapper aux caractères spéciaux pour que cela fonctionne correctement. Quelque chose comme:
[NSURL URLWithString:[googlSearchString stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]];
Utilisation de Swift 2.2
Pour échapper des caractères non-english , par exemple: pour faire une demande d'URL do:
let urlPath = path.URLString.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())
Ici urlPath
est une Optional
et path
est votre URL d'origine (celle avec des caractères non anglais)
Utilisez ceci pour Swift 4:
let url = myURLString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)
let myURL = URL(string: url)
Dans la méthode 2k16, stringByAddingPercentEscapesUsingEncoding:
est obsolète et il n’est pas possible de l’échapper correctement. Lorsque l'URL est prédéfinie, utilisez simplement la chaîne codée par le navigateur, car la méthode stringByAddingPercentEncodingWithAllowedCharacters:
ne peut pas échapper à l'URL complète.