Ho la seguente stringa …
NSString *googleSearchString = @"http://www.google.com/search?q=lyrics+%22Tænder+På+Dig%22+%22Jakob+Sveistrup%22";
Si noti che ha alcuni caratteri accentati. Quando provo a trasformarlo in un URL, l’URL restituito è nullo …
[NSURL URLWithString:googleSearchString];
Quindi normalmente l’url funziona tranne quando nella stringa sono presenti caratteri accentati non inglesi. Qualche aiuto su come gestirlo?
È necessario sfuggire ai caratteri speciali per farlo funzionare correttamente. Qualcosa di simile a:
[NSURL URLWithString:[googlSearchString stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]];
Utilizzando Swift 2.2
Per l’escape di caratteri non inglesi , ad esempio: per fare una richiesta URL fai:
let urlPath = path.URLString.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())
Qui urlPath
è Optional
e path
è il tuo URL originale (quello con caratteri non inglesi)
Utilizzare questo per SWIFT 4:
let url = myURLString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) let myURL = URL(string: url)
Nel metodo stringByAddingPercentEscapesUsingEncoding:
è deprecato e non c’è modo di stringByAddingPercentEscapesUsingEncoding:
correttamente. Quando l’URL è predefinito, usa solo la stringa codificata del browser, perché stringByAddingPercentEncodingWithAllowedCharacters:
metodo non può sfuggire all’intero URL.
Alcune volte uno spazio nell’URL può causare questo problema.