Подтвердить что ты не робот

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, за исключением случаев, когда в строке присутствуют символы с неанглийскими буквами. Любая помощь в том, как с этим справиться?

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

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

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

Ответ 3

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

Ответ 4

Иногда это может вызвать пробел в URL-адресе.