以下是我的URL编码代码
extension String {
var encoded: String {
return self.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) ?? ""
}
}
但我面临的问题是,如果url中包含%20,它被编码为%2520,尽管我已经添加了 urlQueryAllowed
原文网址:/mydomain.inretailers_data_v2retailer32017372-Tea%20Coffee%20Vending%20Machine.JPG https:/mydomain.inretailers_data_v2retailer32017372-Tea%20Coffee%20Vending%20Machine.JPG
编码的网址。https:/mydomain.inretailers_data_v2retailer32017372-Tea%2520Coffee%2520Vending%2520Machine.JPG。
如果你有一个已经编码的URL字符串,你首先需要删除百分比编码,然后再重新应用。
如果你不确定你的URL是否已经编码,你可以简单地使用一个 if let
关于 removingPercentEncoding
并根据其结果,要么调用 addingPercentEncoding
在原始的URL上或在您删除编码的URL上。
let alreadyEncodedURLString = "https://mydomain.in/retailers_data_v2/retailer/320/17372-Tea%20Coffee%20Vending%20Machine.JPG"
if let unencodedURLString = alreadyEncodedURLString.removingPercentEncoding {
unencodedURLString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)
} else {
alreadyEncodedURLString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)
}