如何在swift 2.3中使用“parameters.dataUsingEncoding(NSUTF8StringEncoding)”进行编码时避免使用空格替换+符号

时间:2017-01-05 16:48:24

标签: swift nsmutableurlrequest

我正在使用NSMutableURLRequest。在将参数发送到服务器时,我必须对其进行编码,因此我使用dataUsingEncoding(NSUTF8StringEncoding) Swift 2.3对其进行编码,但它正在从字符串中删除+符号。有没有其他方法可以做到这一点?

示例代码:

let URL = NSURL(string: urlString)
let urlRequest = NSMutableURLRequest(URL: URL!)
urlRequest.HTTPMethod = "POST"

urlRequest.addValue("application/x-www-form-urlencoded; charset=UTF-8", forHTTPHeaderField: "Content-Type")

urlRequest.HTTPBody = Parameters.dataUsingEncoding(NSUTF8StringEncoding); 

1 个答案:

答案 0 :(得分:1)

加号(+)是空格的标准快捷键,您必须在编码前将%替换为%2d。请查看this Doc for other signs

let URL = NSURL(string: urlString)
let urlRequest = NSMutableURLRequest(URL: URL!)
urlRequest.HTTPMethod = "POST"

urlRequest.addValue("application/x-www-form-urlencoded; charset=UTF-8", forHTTPHeaderField: "Content-Type")
Parameters = Parameters.stringByReplacingOccurrencesOfString("+", withString: "%2b")
urlRequest.HTTPBody = Parameters.dataUsingEncoding(NSUTF8StringEncoding); 

如果它没有帮助你,你也可以对其进行网址编码

Parameters = Parameters.stringByReplacingPercentEscapesUsingEncoding(NSUTF8StringEncoding)!

然后用%2d替换(+)符号,然后使用dataUsingEncoding对其进行编码 希望它有所帮助