Использование String addingPercentEncoding для кодирования строки в качестве параметра запроса

#swift

#swift

Вопрос:

У меня есть входная строка » 20″, и я пытаюсь передать ее в качестве параметра запроса в url.

Итак, я пытаюсь закодировать myInputString, выполнив

 let s1 = myInputString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)
  

Но в отладчике строка s1 по-прежнему отображается как ‘ 20’ вместо ‘+20’

Я что-то сделал не так?

Комментарии:

1. является допустимым символом URL. Кодирование не требуется.

Ответ №1:

Как уже упоминалось Мэттом , это законный символ URL. Если вам действительно нужно ее закодировать, вам нужно будет создать свой собственный пользовательский urlQueryAllowed и вычесть из него знак плюс:

 extension CharacterSet {
    static let allowedCharacters = urlQueryAllowed.subtracting(.init(charactersIn: " "))
}
  

 let myInputString = " 20"
let s1 = myInputString.addingPercentEncoding(withAllowedCharacters: .allowedCharacters)  // "+20"
  

Комментарии:

1. Спасибо. Не могли бы вы помочь мне понять, почему ‘ ‘ является допустимым символом? Когда я перехожу к w3schools.com/tags/ref_urlencode . ASP , введите 1 20 , а затем «Url encoded», я получаю 1+20

2. в an URL также означает пробел.