使用 String addedPercentEncoding 将字符串编码为查询参数
Posted
技术标签:
【中文标题】使用 String addedPercentEncoding 将字符串编码为查询参数【英文标题】:Using String addingPercentEncoding to encode a string as query param 【发布时间】:2020-10-08 01:26:15 【问题描述】:我有一个输入字符串“+20”,我试图将其作为查询参数传递给 url。
所以我试图通过这样做来对 myInputString 进行编码
let s1 = myInputString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)
但在调试器中,字符串 s1 仍然显示为 '+20' 而不是 '%2B20'
是不是我做错了什么?
【问题讨论】:
+
是合法的 URL 字符。它不需要编码。
【参考方案1】:
正如 matt 已经提到的,+
是一个合法的 URL 字符。如果您确实需要对其进行编码,则需要创建自己的自定义 urlQueryAllowed
并从中减去加号:
extension CharacterSet
static let allowedCharacters = urlQueryAllowed.subtracting(.init(charactersIn: "+"))
let myInputString = "+20"
let s1 = myInputString.addingPercentEncoding(withAllowedCharacters: .allowedCharacters) // "%2B20"
【讨论】:
谢谢。你能帮我理解为什么'+'是一个有效的字符吗?当我去w3schools.com/tags/ref_urlencode.ASP,输入1+20
,然后'Url encoded',我得到1%2B20
+
在URL
中也表示空格。以上是关于使用 String addedPercentEncoding 将字符串编码为查询参数的主要内容,如果未能解决你的问题,请参考以下文章
cv::String 和 std::string:啥时候使用哪一个以及两者都使用的必要性?
[][]string 与包含 []string 的结构的内存使用情况
无法使用“Int”类型的索引为“[String : String]”类型的值下标
string eregi_replace(string pattern, string replacement, string string);的使用