gpt4 book ai didi

ios - 无法在 URL + swift 中编码加号字符

转载 作者:搜寻专家 更新时间:2023-10-31 21:50:05 24 4
gpt4 key购买 nike

我正在使用 GET 方法,在该方法中我必须在 URL 中传递电子邮件地址。 API 期望它被编码。我尝试了编码选项,但无法对“+”字符进行编码。

我尝试了以下代码

let encodedEmail = emailAddressTxt.text!.addingPercentEncoding(withAllowedCharacters:.urlHostAllowed)

let urlString = "http://www.example.com/User/GetUserDetailsByEmailAddress?EmailAddress=\(encodedEmail!)"

print(escapedString)

它打印http://www.example.com/User/GetUserDetailsByEmailAddress?EmailAddress=mano+1%40gmail.com

其中“@”字符仅被编码而“+”未被编码。

最佳答案

不幸的是,CharacterSet.urlHostAllowedCharacterSet.urlQueryAllowed 都包含 + 作为允许。由于历史原因,大多数网络服务器将 + 视为空格 () 的替代品,因此您需要对 + 进行转义。

为此,您可能需要定义自己的CharacterSet:

extension CharacterSet {
static let rfc3986Unreserved = CharacterSet(charactersIn: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~")
}

let emailAddressText = "mano+1@gmail.com"

let encodedEmail = emailAddressText.addingPercentEncoding(withAllowedCharacters:.rfc3986Unreserved)

print(encodedEmail!) //->mano%2B1%40gmail.com

关于ios - 无法在 URL + swift 中编码加号字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41561853/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com