Encode a URL with “#” 網址Encode特殊字元不轉換
Published in
Apr 17, 2023
(url, addingPercentEncoding, Reserved Special characters)
在網址中有些字元有特殊的符號,需要轉換可以參考下方網址
如果只透過addingPercentEncoding的urlQueryAllowed處理,
全部特殊符號都會被轉換,包含#(如下圖)
但如果url需要同時轉換特殊符號,又要保留有意義的特殊字元
可以參考本文
在轉換的條件,額外設定排外的特殊符號
var allowedCharacterSet = CharacterSet.urlQueryAllowed
allowedCharacterSet.insert("#")
guard let webURL = url?.addingPercentEncoding(withAllowedCharacters: allowedCharacterSet as CharacterSet) else {
return url
}
加removingPercentEncoding避免重複encoding
var allowedCharacterSet = CharacterSet.urlQueryAllowed
allowedCharacterSet.insert("#")
guard let webURL = url?.removingPercentEncoding?.addingPercentEncoding(withAllowedCharacters: allowedCharacterSet as CharacterSet) else {
return url
}
結果如下
番外篇
在轉換的條件,額外設定須轉換的特殊符號
var allowedCharacterSet = CharacterSet.urlQueryAllowed
allowedCharacterSet.remove("+")
guard let webURL = url?.addingPercentEncoding(withAllowedCharacters: allowedCharacterSet as CharacterSet) else {
return url
}
加removingPercentEncoding避免重複encoding
var allowedCharacterSet = CharacterSet.urlQueryAllowed
allowedCharacterSet.remove("+")
guard let webURL = url?.removingPercentEncoding?.addingPercentEncoding(withAllowedCharacters: allowedCharacterSet as CharacterSet) else {
return url
}
CharacterSet的url轉換很詭異….
該轉的沒轉,不該轉的也轉
強制轉大寫頭疼 = =