ios - Swift URL 解码不解码字符串
问题描述
当尝试解码以下编码字符串时,它不起作用......它实际上什么也没做......保持字符串原样:
https://www.foodhat.app/?rOpeningTime=08:00&rClosingTime=20:00&rClosedUntil=2019-08-19&pId=557&rId=69&goTo=CUSTOMER_PRODUCT_DETAILS&cName=Duhok&pName=%D9%85%D9%86%D8%B3%D9%81+%D8%AF%D9%88%D9%84%D9%85%D8%A9&rName=Mansaf+Alzain&rMinOrderValue=15000
pName
是阿拉伯语,所以不要怀疑它的编码。
我str.removingPercentEncoding
用来解码字符串...但如前所述...它不会删除“+”(例如 in rName
)!
结果是
let str = "https://www.foodhat.app/?rOpeningTime=08:00&rClosingTime=20:00&rClosedUntil=2019-08-19&pId=557&rId=69&goTo=CUSTOMER_PRODUCT_DETAILS&cName=Duhok&pName=%D9%85%D9%86%D8%B3%D9%81+%D8%AF%D9%88%D9%84%D9%85%D8%A9&rName=Mansaf+Alzain&rMinOrderValue=15000"
print(str.removingPercentEncoding!)
//https://www.foodhat.app/?rOpeningTime=08:00&rClosingTime=20:00&rClosedUntil=2019-08-19&pId=557&rId=69&goTo=CUSTOMER_PRODUCT_DETAILS&cName=Duhok&pName=منسف+دولمة&rName=Mansaf+Alzain&rMinOrderValue=15000
我究竟做错了什么?
解决方案
解码 URL 时,您应该使用URLComponents
:
let url = URL(string:"https://www.foodhat.app/?rOpeningTime=08:00&rClosingTime=20:00&rClosedUntil=2019-08-19&pId=557&rId=69&goTo=CUSTOMER_PRODUCT_DETAILS&cName=Duhok&pName=%D9%85%D9%86%D8%B3%D9%81+%D8%AF%D9%88%D9%84%D9%85%D8%A9&rName=Mansaf+Alzain&rMinOrderValue=15000")!
let components = URLComponents(url: url, resolvingAgainstBaseURL: false)
print(components)
输出是:
[rOpeningTime=08:00, rClosingTime=20:00, rClosedUntil=2019-08-19, pId=557, rId=69, goTo=CUSTOMER_PRODUCT_DETAILS, cName=Duhok, pName=منسف+دولمة, rName=Mansaf+Alzain, rMinOrderValue=15000]
推荐阅读
- r - gt 表保存到 Word
- teradata - 如何在 Tera Data Studio 中扩展行数限制?
- oracle - Apex_200200 表上的权限不足
- firebase - 从 Firebase 数据库规则评估 Firestore 中文档的存在?
- nestjs - 在 Nx NestJS 项目中使用 npm 链接包注册 prom-client 指标
- python - 如何使用谓词按标签过滤我的自定义张量流数据集
- c# - win10/windos server2016上的注册服务奇怪的行为
- c# - Xunit 内联自动数据与自动夹具问题
- youtrack - 将以前的问题 ID 提取到 youtrack 报告中
- linux - 生成命令行“dbus-launch --autolaunch="xyz" --binary-syntax --close-stderr”时出错:子进程以代码1退出