NSURL URLWithString: имеет значение null с неанглийскими акцентированными символами

У меня есть следующая строка …

NSString *googleSearchString = @"http://www.google.com/search?q=lyrics+%22Tænder+På+Dig%22+%22Jakob+Sveistrup%22"; 

Обратите внимание, что у него есть некоторые символы с акцентом. Когда я пытаюсь превратить это в URL-адрес, возвращаемый URL-адрес null …

 [NSURL URLWithString:googleSearchString]; 

Таким образом, обычно URL-адрес работает, за исключением тех случаев, когда в строке есть акцентированные неанглийские символы. Любая помощь в том, как с этим справиться?

Вам нужно избежать специальных символов, чтобы они работали правильно. Что-то вроде:

 [NSURL URLWithString:[googlSearchString stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]]; 

Использование Swift 2.2

Для избежания неанглийских символов, например: чтобы сделать запрос URL-адреса :

let urlPath = path.URLString.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())

Здесь urlPath является Optional а path – ваш исходный url (тот, у которого есть неанглийские символы)

Используйте это для SWIFT 4:

 let url = myURLString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) let myURL = URL(string: url) 

В методе stringByAddingPercentEscapesUsingEncoding: устарел, и нет способа избежать этого правильно. Когда URL предопределен, просто используйте строку, закодированную в браузере, потому что метод stringByAddingPercentEncodingWithAllowedCharacters: не может избежать цельного URL.

В некоторых случаях пространство в URL-адресе может вызвать эту проблему.

Interesting Posts
Давайте будем гением компьютера.