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

如何避免在使用swift 2.3中的“parameters.dataUsingEncoding(NSUTF8StringEncoding)”进行编码时+符号被替换为空格,swift,nsmutableurlrequest,Swift,Nsmutableurlrequest,我正在使用NSMutableURLRequest。在将参数发送到服务器时,我必须对其进行编码,因此我使用DataUsingEncodingConsutf8StringEncoding Swift 2.3对其进行编码,但它正在从字符串中删除+符号。有没有别的办法 示例代码: let URL = NSURL(string: urlString) let urlRequest = NSMutableURLRequest(URL: URL!) urlRequest.HTTPMethod = "POST"

我正在使用NSMutableURLRequest。在将参数发送到服务器时,我必须对其进行编码,因此我使用DataUsingEncodingConsutf8StringEncoding 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); 

加号是空格的标准快捷方式,编码前必须将+替换为%2d。请看一看

你也可以对它进行url编码,如果它对你没有帮助的话

Parameters = Parameters.stringByReplacingPercentEscapesUsingEncoding(NSUTF8StringEncoding)!
然后将+符号替换为%2d,然后使用DataUsingEncode对其进行编码
希望对您有所帮助

+在解码url编码字符串时,符号不是由DataUsingEncode_:)删除的,而是由服务器端删除的。为了避免这种情况发生,您需要在应用数据之前对参数进行url编码。@OOPer在其他情况下,它可以正常工作,但使用+输入密码和手机无国家代码,这个问题正在发生,它将+符号替换为空格,我已经在charles日志中检查了请求,它将+符号替换为空格,我需要重复吗?在应用数据之前,您需要对参数进行url编码,使用encode_U7;:。@OOPer使用了StringByAddingPercentEncodingwithAllowedCharactersSchracterSet.URLHostAllowedCharacterSet,但仍然相同result@OOPer谢谢你的回复,它以另一种方式工作
Parameters = Parameters.stringByReplacingPercentEscapesUsingEncoding(NSUTF8StringEncoding)!