You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS Swift实现DeepLink后避免显示百分号编码问题求助

问题解决:DeepLink传递字符串到Bear后显示编码内容

问题根源

你做了重复的URL编码操作:

  • 手动对原始字符串执行了addingPercentEncoding编码
  • 把已编码的字符串传给URLQueryItem的value
  • 但URLComponents生成最终URL时,会自动对query参数的value再次编码
  • 双重编码导致Bear收到的是经过两次转义的内容,所以显示%20、&这类编码字符

解决方法

直接用原始字符串作为URLQueryItem的value,让URLComponents自动完成编码,不用手动处理。

修正后的代码

let text = "By submitting, I confirm that I am an American, above 18 yrs of age & residing in America. I have read & agree to American Bank. I also agree to receive calls, SMS & WhatsApp messages from American Bank"

// 移除手动编码步骤,直接传入原始文本
var components = URLComponents(string: "bear://x-callback-url/create")!
components.queryItems = [
    URLQueryItem(name: "title", value: "Title"),
    URLQueryItem(name: "text", value: text), // 此处使用原始字符串
    URLQueryItem(name: "x-success", value: "myapp://bear-note-created")
]

// 生成的URL会自动完成正确编码,不会出现双重转义问题
if let url = components.url {
    // 执行DeepLink跳转逻辑
}

额外说明

URLComponents的核心作用就是自动处理URL各部分的编码/解码,手动提前编码反而会打乱其处理流程。像&这类特殊字符,它会自动转成%26,Bear接收到后会正确解码显示为&,不会留下编码痕迹。

内容的提问来源于stack exchange,提问作者user4150758

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 18:04:57