Swift 4 Как удалить%EF%BB%BF из URL, созданного из URLComponent()?
Я пытаюсь создать URL из компонентов
var com = URLComponents()
com.scheme = "http"
com.host = "192.168.1.99"
com.port = 77
com.path = "/api/dosomething/55"
print("SHOW ME URl = \(com.url!))")
Что я получил, это что-то вроде этого
http://192.168.1.99:77/%EF%BB%BFapi/dosomething/55
Всегда есть %EF%BB%BF
, в этом случае URL становится недействительным
я хочу удалить %EF%BB%BF
с URL
Как я могу это сделать?
3 ответа
Решение
Это URL-кодировка спецификации UTF-8, это может быть вызвано обработкой URL-адресов некоторыми текстовыми редакторами. Удалите пробелы из строки пути:
var com = URLComponents()
com.scheme = "http"
com.host = "192.168.1.99"
com.port = 77
let path = //The path
let trimmedPath = path.trimmingCharacters(in: .whitespaces)
com.path = trimmedPath
print("SHOW ME URl = \(com.url!)")
В utf-8 'НУЛЕВОЙ ПРОСТРАНСТВО НУЛЬНОЙ ШИРИНЫ' кодируется как 0xEF 0xBB 0xBF
Прямой ответ на ваш вопрос
Вы можете заменить этот шаблон ничем:
let theURL = "http://192.168.1.99:77/%EF%BB%BFapi/dosomething/55"
let partToRemove = "%EF%BB%BF"
let clearURL = theURL.replacingOccurrences(of: partToRemove, with: "")
print(clearURL)
В дополнение к ответу Иелямани, как.whitespaces
похоже, не содержит символа спецификации, я предлагаю следующее:
extension String
{
var withoutBom: String
{
let bom = "\u{FEFF}"
if self.starts(with: bom)
{
return String(dropFirst(bom.count))
}
return self
}
}
а затем используя что-то вроде:
path.withoutBom