Ios 在我的例子中,将url字符串编码到字典:Some value have=inside

Ios 在我的例子中,将url字符串编码到字典:Some value have=inside,ios,swift,urlencode,urldecode,Ios,Swift,Urlencode,Urldecode,我正在尝试从下面的url编码字符串将decode转换为dictionary。下面给出了执行此操作的常规方法。就我而言,它不起作用。我还需要删除任何字符,如\u{05} let params = str.components(separatedBy: "&").map({ $0.components(separatedBy: "=") }).reduce(into: [String:String]()) { dict, pair in if pair.count == 2

我正在尝试从下面的url编码字符串将decode转换为dictionary。下面给出了执行此操作的常规方法。就我而言,它不起作用。我还需要删除任何字符,如
\u{05}

let params = str.components(separatedBy: "&").map({
    $0.components(separatedBy: "=")
}).reduce(into: [String:String]()) { dict, pair in
    if pair.count == 2 {
        dict[pair[0]] = pair[1]
    }
}
我的url编码字符串为

"id=sfghsgh=sbfsfhj&name=awsjdk_fs\u{05}"
我期待结果

{ 
"id" = "sfghsgh=sbfsfhj",
"name" = "awsjdk_fs"
}
如何实现?

借助于:

var components=urlmonents()
components.query=“id=sfghsgh=sbfsfhj&name=awsjdk\u fs”
components.queryItems
//=>可选([id=sfghsgh=sbfsfhj,name=awsjdk_fs])
let list=components.queryItems?.map{($0.name,$0.value)}??[]
//[(“id”,可选(“sfghsgh=sbfsfhj”),(“name”,可选(“awsjdk_fs”)]
设dict=Dictionary(list,uniquingKeysWith:{a,b in b})
//[“名称”:可选(“awsjdk_fs”),“id”:可选(“sfghsgh=sbfsfhj”)]
如果您需要
[String:String]
而不是
[String:String?]

let list=components.queryItems?.compactMap{($0.name,$0.value)as?(String,String)}??[]
//[(“id”,“sfghsgh=sbfsfhj”),(“name”,“awsjdk_fs”)]
设dict=Dictionary(list,uniquingKeysWith:{a,b in b})
//[“名称”:“awsjdk_fs”,“id”:“sfghsgh=sbfsfhj”]

使用URL组件。例如,请参阅工作原理。但是当密钥包含一些unicode时,答案是falied,更新了我的问题您希望更新的查询字符串得到什么结果?所有字符都是“unicode字符”。您希望删除什么?需要更多详细信息。仅
\u{05}
?那
\u{04}
\u{10fff}
呢?再次:请准确描述任务,否则我们只能猜测。